Win32 API 日本語リファレンス
ホームNetworkManagement.WindowsFirewall › INetFwMgr

INetFwMgr

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDf7898af5-cac4-4632-a2ec-da06e5111af2継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

INetFwMgr インターフェイスは、コンピューターのファイアウォール設定へのアクセスを提供します。

解説(Remarks)

Windows Vista: Windows Vista のユーザーは、このインターフェイスのすべてのメソッドおよびプロパティについて、Windows Vista で開発されたアプリケーションを使用する必要があります。

このインターフェイスは HNetCfg.FwMgr COM オブジェクトによってサポートされます。

構成の変更はすべて直ちに有効になります。

メソッド 5

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_LocalPolicy(INetFwPolicy** localPolicy)

ローカルのファイアウォール ポリシーを取得します。

localPolicyINetFwPolicy**outローカルコンピューターのファイアウォールポリシーを表す INetFwPolicy インターフェイスを受け取るポインタである。
vtbl 8 HRESULT get_CurrentProfileType(NET_FW_PROFILE_TYPE* profileType)

現在有効なファイアウォール プロファイルの種類を取得します。

profileTypeNET_FW_PROFILE_TYPE*out現在アクティブなプロファイルの種類を表す NET_FW_PROFILE_TYPE 値を受け取るポインタである。

解説(Remarks)

SharedAccess サービスが実行中である必要があります。

vtbl 9 HRESULT RestoreDefaults()

ローカル構成を、インストール直後の既定の状態に復元します。

戻り値

C++

戻り値 説明
E_ACCESSDENIED
アクセス許可の問題により、操作が中止されました。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。

VB

メソッドが成功した場合、戻り値は S_OK です。

メソッドが失敗した場合、戻り値は次のいずれかのエラー コードです。

戻り値 説明
E_ACCESSDENIED
アクセス許可の問題により、操作が中止されました。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。

解説(Remarks)

このメソッドは、ユーザーおよびアプリケーションによって追加されたすべてのアプリケーションとポートを削除し、システムをインストール時の状態に戻します。これには、インターネット接続共有の既定値の復元も含まれます。

vtbl 10 HRESULT IsPortAllowed(LPWSTR imageFileName, NET_FW_IP_VERSION ipVersion, INT portNumber, LPWSTR localAddress, NET_FW_IP_PROTOCOL ipProtocol, VARIANT* allowed, VARIANT* restricted)

アプリケーションが指定されたポートで受信トラフィックを待ち受けできるかどうかを判定します。

imageFileNameLPWSTRinネットワークで待ち受けを行うプロセスのイメージ ファイル名。 完全修飾パスである必要がありますが、環境変数を含めることができます。imageFileNameNULL の場合、この関数はすべてのアプリケーションに対してポートが許可されているかどうかを判定します。
ipVersionNET_FW_IP_VERSIONinトラフィックの IP バージョン。localAddressNULL 以外の場合、 これを NET_FW_IP_VERSION_ANY にすることはできません。
portNumberINTinトラフィックのローカル IP ポート番号。
localAddressLPWSTRinトラフィックのローカル アドレスを指定する、ドット付き 10 進表記の IPv4 アドレスまたは 16 進表記の IPv6 アドレス。通常は bind に渡されるアドレスです。localAddressNULL の場合、 この関数はすべてのインターフェイスに対してポートが許可されているかどうかを判定します。
ipProtocolNET_FW_IP_PROTOCOLinトラフィックの IP プロトコル。NET_FW_IP_PROTOCOL_TCP または NET_FW_IP_PROTOCOL_UDP のいずれかです。
allowedVARIANT*out少なくとも一部のローカル インターフェイスおよびリモート アドレスに対してポートが許可されているかどうかを、 VARIANT_TRUE または VARIANT_FALSE の値で示します。
restrictedVARIANT*outこのポートについて一部のローカル インターフェイスまたはリモート アドレスがブロックされているかどうかを、 VARIANT_TRUE または VARIANT_FALSE の値で示します。たとえば、ポートがローカル サブネットのみに 制限されている場合などです。

戻り値

C++

戻り値 説明
E_ACCESSDENIED
アクセス許可の問題により、操作が中止されました。
E_INVALIDARG
パラメーターが無効であったため、メソッドが失敗しました。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
ポインターが無効であったため、メソッドが失敗しました。

VB

メソッドが成功した場合、戻り値は S_OK です。

メソッドが失敗した場合、戻り値は次のいずれかのエラー コードです。

戻り値 説明
E_ACCESSDENIED
アクセス許可の問題により、操作が中止されました。
E_INVALIDARG
パラメーターが無効であったため、メソッドが失敗しました。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
ポインターが無効であったため、メソッドが失敗しました。

解説(Remarks)

このメソッドの代わりに、通常は INetFwPolicy2::IsRuleGroupEnabled メソッドの使用が推奨されます。

IsPortAllowed メソッドは、現在のファイアウォール構成において次の対象のトラフィックが許可されるかどうかを確認します。

IsPortAllowed は動作の際に、ファイアウォールが現在有効か無効か、現在のプロファイルの例外一覧でアプリケーションが許可されているか、現在のプロファイルの例外一覧でポートが許可されているか、ファイルとプリンターの共有オプションが有効になっているか、リモート管理オプションが有効になっているか、といった点を考慮します。

ポートが許可されるかどうかの判定には多くの要因が関係するため、このメソッドの入力パラメーターでより具体的な情報を指定するほど、意味のある制限情報を伴う明確な結果が返される可能性が高くなります。

vtbl 11 HRESULT IsIcmpTypeAllowed(NET_FW_IP_VERSION ipVersion, LPWSTR localAddress, BYTE type, VARIANT* allowed, VARIANT* restricted)

指定された ICMP タイプが許可されているかどうかを判定します。

ipVersionNET_FW_IP_VERSIONin

トラフィックの IP バージョン。NET_FW_IP_VERSION_ANY にすることはできません。

トラフィックの IP バージョン。 NET_FW_IP_VERSION_ANY にすることはできません。

localAddressLPWSTRinトラフィックのローカル アドレスを指定する、ドット付き 10 進表記の IPv4 アドレスまたは 16 進表記の IPv6 アドレス。通常は bind に渡されるアドレスです。localAddressNULL の場合、 この関数はすべてのインターフェイスに対してポートが許可されているかどうかを判定します。
typeBYTEinICMP タイプ。指定可能な ICMP タイプの一覧については、ICMP Type Numbers を参照してください。
allowedVARIANT*out少なくとも一部のローカル インターフェイスおよびリモート アドレスに対してポートが許可されているかどうかを、 VARIANT_TRUE または VARIANT_FALSE の値で示します。
restrictedVARIANT*outこのポートについて一部のローカル インターフェイスまたはリモート アドレスがブロックされているかどうかを、 VARIANT_TRUE または VARIANT_FALSE の値で示します。たとえば、ポートがローカル サブネットのみに 制限されている場合などです。

戻り値

C++

戻り値 説明
E_ACCESSDENIED
アクセス許可の問題により、操作が中止されました。
E_INVALIDARG
パラメーターが無効であったため、メソッドが失敗しました。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
ポインターが無効であったため、メソッドが失敗しました。

VB

メソッドが成功した場合、戻り値は S_OK です。

メソッドが失敗した場合、戻り値は次のいずれかのエラー コードです。

戻り値 説明
E_ACCESSDENIED
アクセス許可の問題により、操作が中止されました。
E_INVALIDARG
パラメーターが無効であったため、メソッドが失敗しました。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
ポインターが無効であったため、メソッドが失敗しました。

解説(Remarks)

このメソッドの代わりに、通常は INetFwPolicy2::IsRuleGroupEnabled メソッドの使用が推奨されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 不要)。