INetFwMgr
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
INetFwMgr インターフェイスは、コンピューターのファイアウォール設定へのアクセスを提供します。
解説(Remarks)
Windows Vista: Windows Vista のユーザーは、このインターフェイスのすべてのメソッドおよびプロパティについて、Windows Vista で開発されたアプリケーションを使用する必要があります。
このインターフェイスは HNetCfg.FwMgr COM オブジェクトによってサポートされます。
構成の変更はすべて直ちに有効になります。
メソッド 5
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
ローカルのファイアウォール ポリシーを取得します。
| localPolicy | INetFwPolicy** | out | ローカルコンピューターのファイアウォールポリシーを表す INetFwPolicy インターフェイスを受け取るポインタである。 |
現在有効なファイアウォール プロファイルの種類を取得します。
| profileType | NET_FW_PROFILE_TYPE* | out | 現在アクティブなプロファイルの種類を表す NET_FW_PROFILE_TYPE 値を受け取るポインタである。 |
解説(Remarks)
SharedAccess サービスが実行中である必要があります。
ローカル構成を、インストール直後の既定の状態に復元します。
戻り値
C++
| 戻り値 | 説明 |
|---|---|
| アクセス許可の問題により、操作が中止されました。 | |
| 必要なメモリを割り当てられませんでした。 |
VB
メソッドが成功した場合、戻り値は S_OK です。メソッドが失敗した場合、戻り値は次のいずれかのエラー コードです。
| 戻り値 | 説明 |
|---|---|
| アクセス許可の問題により、操作が中止されました。 | |
| 必要なメモリを割り当てられませんでした。 |
解説(Remarks)
このメソッドは、ユーザーおよびアプリケーションによって追加されたすべてのアプリケーションとポートを削除し、システムをインストール時の状態に戻します。これには、インターネット接続共有の既定値の復元も含まれます。
アプリケーションが指定されたポートで受信トラフィックを待ち受けできるかどうかを判定します。
| imageFileName | LPWSTR | in | ネットワークで待ち受けを行うプロセスのイメージ ファイル名。 完全修飾パスである必要がありますが、環境変数を含めることができます。imageFileName が NULL の場合、この関数はすべてのアプリケーションに対してポートが許可されているかどうかを判定します。 |
| ipVersion | NET_FW_IP_VERSION | in | トラフィックの IP バージョン。localAddress が NULL 以外の場合、 これを NET_FW_IP_VERSION_ANY にすることはできません。 |
| portNumber | INT | in | トラフィックのローカル IP ポート番号。 |
| localAddress | LPWSTR | in | トラフィックのローカル アドレスを指定する、ドット付き 10 進表記の IPv4 アドレスまたは 16 進表記の IPv6 アドレス。通常は bind に渡されるアドレスです。localAddress が NULL の場合、 この関数はすべてのインターフェイスに対してポートが許可されているかどうかを判定します。 |
| ipProtocol | NET_FW_IP_PROTOCOL | in | トラフィックの IP プロトコル。NET_FW_IP_PROTOCOL_TCP または NET_FW_IP_PROTOCOL_UDP のいずれかです。 |
| allowed | VARIANT* | out | 少なくとも一部のローカル インターフェイスおよびリモート アドレスに対してポートが許可されているかどうかを、 VARIANT_TRUE または VARIANT_FALSE の値で示します。 |
| restricted | VARIANT* | out | このポートについて一部のローカル インターフェイスまたはリモート アドレスがブロックされているかどうかを、 VARIANT_TRUE または VARIANT_FALSE の値で示します。たとえば、ポートがローカル サブネットのみに 制限されている場合などです。 |
戻り値
C++
| 戻り値 | 説明 |
|---|---|
| アクセス許可の問題により、操作が中止されました。 | |
| パラメーターが無効であったため、メソッドが失敗しました。 | |
| 必要なメモリを割り当てられませんでした。 | |
| ポインターが無効であったため、メソッドが失敗しました。 |
VB
メソッドが成功した場合、戻り値は S_OK です。メソッドが失敗した場合、戻り値は次のいずれかのエラー コードです。
| 戻り値 | 説明 |
|---|---|
| アクセス許可の問題により、操作が中止されました。 | |
| パラメーターが無効であったため、メソッドが失敗しました。 | |
| 必要なメモリを割り当てられませんでした。 | |
| ポインターが無効であったため、メソッドが失敗しました。 |
解説(Remarks)
このメソッドの代わりに、通常は INetFwPolicy2::IsRuleGroupEnabled メソッドの使用が推奨されます。
IsPortAllowed メソッドは、現在のファイアウォール構成において次の対象のトラフィックが許可されるかどうかを確認します。
- 特定のアプリケーション。
- 特定のポート。
- 特定のポート上の特定のアプリケーション。
IsPortAllowed は動作の際に、ファイアウォールが現在有効か無効か、現在のプロファイルの例外一覧でアプリケーションが許可されているか、現在のプロファイルの例外一覧でポートが許可されているか、ファイルとプリンターの共有オプションが有効になっているか、リモート管理オプションが有効になっているか、といった点を考慮します。
ポートが許可されるかどうかの判定には多くの要因が関係するため、このメソッドの入力パラメーターでより具体的な情報を指定するほど、意味のある制限情報を伴う明確な結果が返される可能性が高くなります。
指定された ICMP タイプが許可されているかどうかを判定します。
| ipVersion | NET_FW_IP_VERSION | in | トラフィックの IP バージョン。NET_FW_IP_VERSION_ANY にすることはできません。 トラフィックの IP バージョン。 NET_FW_IP_VERSION_ANY にすることはできません。 |
| localAddress | LPWSTR | in | トラフィックのローカル アドレスを指定する、ドット付き 10 進表記の IPv4 アドレスまたは 16 進表記の IPv6 アドレス。通常は bind に渡されるアドレスです。localAddress が NULL の場合、 この関数はすべてのインターフェイスに対してポートが許可されているかどうかを判定します。 |
| type | BYTE | in | ICMP タイプ。指定可能な ICMP タイプの一覧については、ICMP Type Numbers を参照してください。 |
| allowed | VARIANT* | out | 少なくとも一部のローカル インターフェイスおよびリモート アドレスに対してポートが許可されているかどうかを、 VARIANT_TRUE または VARIANT_FALSE の値で示します。 |
| restricted | VARIANT* | out | このポートについて一部のローカル インターフェイスまたはリモート アドレスがブロックされているかどうかを、 VARIANT_TRUE または VARIANT_FALSE の値で示します。たとえば、ポートがローカル サブネットのみに 制限されている場合などです。 |
戻り値
C++
| 戻り値 | 説明 |
|---|---|
| アクセス許可の問題により、操作が中止されました。 | |
| パラメーターが無効であったため、メソッドが失敗しました。 | |
| 必要なメモリを割り当てられませんでした。 | |
| ポインターが無効であったため、メソッドが失敗しました。 |
VB
メソッドが成功した場合、戻り値は S_OK です。メソッドが失敗した場合、戻り値は次のいずれかのエラー コードです。
| 戻り値 | 説明 |
|---|---|
| アクセス許可の問題により、操作が中止されました。 | |
| パラメーターが無効であったため、メソッドが失敗しました。 | |
| 必要なメモリを割り当てられませんでした。 | |
| ポインターが無効であったため、メソッドが失敗しました。 |
解説(Remarks)
このメソッドの代わりに、通常は INetFwPolicy2::IsRuleGroupEnabled メソッドの使用が推奨されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_INetFwMgr "{F7898AF5-CAC4-4632-A2EC-DA06E5111AF2}" #usecom global INetFwMgr IID_INetFwMgr "{304CE942-6E39-40D8-943A-B913C40C9CD4}" #comfunc global INetFwMgr_get_LocalPolicy 7 sptr #comfunc global INetFwMgr_get_CurrentProfileType 8 var #comfunc global INetFwMgr_RestoreDefaults 9 #comfunc global INetFwMgr_IsPortAllowed 10 wstr,int,int,wstr,int,var,var #comfunc global INetFwMgr_IsIcmpTypeAllowed 11 int,wstr,int,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_INetFwMgr "{F7898AF5-CAC4-4632-A2EC-DA06E5111AF2}" #usecom global INetFwMgr IID_INetFwMgr "{304CE942-6E39-40D8-943A-B913C40C9CD4}" #comfunc global INetFwMgr_get_LocalPolicy 7 sptr #comfunc global INetFwMgr_get_CurrentProfileType 8 sptr #comfunc global INetFwMgr_RestoreDefaults 9 #comfunc global INetFwMgr_IsPortAllowed 10 wstr,int,int,wstr,int,sptr,sptr #comfunc global INetFwMgr_IsIcmpTypeAllowed 11 int,wstr,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。