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

INetSharingConfiguration

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

公式ドキュメント

INetSharingConfiguration インターフェースは、接続共有、ポートマッピング、および Internet Connection Firewall を管理するためのメソッドを提供します。

メソッド 10

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

vtbl 7 HRESULT get_SharingEnabled(VARIANT_BOOL* pbEnabled)

get_SharingEnabled メソッドは、この接続で共有が有効になっているかどうかを判定します。

pbEnabledVARIANT_BOOL*outこの接続で共有が有効かどうかを正常終了時に受け取る VARIANT_BOOL 変数へのポインターです。共有が有効な場合、この値は TRUE になります。それ以外の場合は FALSE になります。

戻り値

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

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

戻り値 説明
E_ABORT
操作は中止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェースはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。

解説(Remarks)

現在インストールされているオペレーティングシステムで接続共有がサポートされているかどうかを確認するには、 INetSharingManager::get_SharingInstalled を使用します。

特定の接続に対する INetSharingConfiguration インターフェースを取得するには、 INetSharingManager::get_INetSharingConfigurationForINetConnection メソッドを使用します。

vtbl 8 HRESULT get_SharingConnectionType(SHARINGCONNECTIONTYPE* pType)

get_SharingConnectionType メソッドは、この接続で有効になっている共有の種類を判定します。

pTypeSHARINGCONNECTIONTYPE*outこの接続がパブリックとして共有されているか、プライベートとして共有されているかを示す SHARINGCONNECTIONTYPE 型の変数へのポインターです。

戻り値

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

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

戻り値 説明
E_ABORT
操作は中止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェースはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。

解説(Remarks)

現在インストールされているオペレーティングシステムで接続共有がサポートされているかどうかを確認するには、 INetSharingManager::get_SharingInstalled を使用します。

特定の接続に対する INetSharingConfiguration インターフェースを取得するには、 INetSharingManager::get_INetSharingConfigurationForINetConnection メソッドを使用します。

vtbl 9 HRESULT DisableSharing()

DisableSharing メソッドは、この接続の共有を無効にします。また、この接続のすべてのマッピングも無効にします。Internet Connection Firewall やブリッジの構成は無効にしません。

戻り値

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

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

戻り値 説明
E_ABORT
操作は中止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェースはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。

解説(Remarks)

このメソッドを呼び出すと、次の通知が表示されます。

%programname% がインターネット接続の共有 (ICS) を無効にしようとしています。現在、次の数のユーザーまたはコンピューターがインターネット接続を共有しています: %number%。%programname% が ICS を無効にすることを許可しますか?

共有が有効になっていない接続に対して呼び出した場合も、このメソッドは正常終了します。この場合でも、メソッドは接続上のすべてのマッピングを無効にします。

特定の接続に対する INetSharingConfiguration インターフェースを取得するには、 INetSharingManager::get_INetSharingConfigurationForINetConnection メソッドを使用します。

vtbl 10 HRESULT EnableSharing(SHARINGCONNECTIONTYPE Type)

EnableSharing メソッドは、この接続の共有を有効にします。

TypeSHARINGCONNECTIONTYPEinこの接続をパブリックとして共有するか、プライベートとして共有するかを指定します。

戻り値

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

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

戻り値 説明
E_ABORT
操作は中止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェースはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。

解説(Remarks)

このメソッドを呼び出すと、次の通知が表示されます。

%programname% がネットワーク接続 %connectionname% でインターネット接続の共有を有効にしようとしています。これにより、ネットワーク上の他のコンピューターが、共有されたパブリック接続を通じてインターネットに接続できるようになります。%programname% がこの接続でインターネット接続の共有を有効にすることを許可しますか?

呼び出し元のアプリケーションがこの接続をパブリックとして共有するよう指定した場合、以前にパブリックとして共有されていた接続は自動的に無効になります。

パブリックとして共有された接続では、Internet Connection Firewall が自動的に有効になります。プライベートとして共有された接続は、既存の設定を保持します。

特定の接続に対する INetSharingConfiguration インターフェースを取得するには、 INetSharingManager::get_INetSharingConfigurationForINetConnection メソッドを使用します。

vtbl 11 HRESULT get_InternetFirewallEnabled(VARIANT_BOOL* pbEnabled)

get_InternetFirewallEnabled メソッドは、この接続で Internet Connection Firewall が有効になっているかどうかを判定します。

pbEnabledVARIANT_BOOL*outInternet Connection Firewall が有効かどうかを正常終了時に受け取る VARIANT_BOOL 変数へのポインターです。Internet Connection Firewall が有効な場合、この値は TRUE になります。それ以外の場合は FALSE になります。

戻り値

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

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

戻り値 説明
E_ABORT
操作は停止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェースはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。

解説(Remarks)

特定の接続に対する INetSharingConfiguration インターフェースを取得するには、 INetSharingManager::get_INetSharingConfigurationForINetConnection メソッドを使用します。

Windows XP with SP2: 結果として得られるファイアウォールの状態は、2 つのレベルの組み合わせによって決まります。まずグローバルな動作モードを確認し、次に対象となるインターフェースのモードを確認します。全体的な動作状態を判定するには、有効なファイアウォール状態の確認 の手順を使用してください。

vtbl 12 HRESULT DisableInternetFirewall()

DisableInternetFirewall メソッドは、この接続の Internet Connection Firewall を無効にします。

戻り値

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

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

戻り値 説明
E_ABORT
操作は停止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェースはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。

解説(Remarks)

このメソッドを呼び出すと、次の通知が表示されます。

%programname% が Internet Connection Firewall を無効にしようとしています。これにより、コンピューターはインターネット上のセキュリティ上の脅威に対してより脆弱になります。%programname% が Internet Connection Firewall を無効にすることを許可しますか?

この接続で Internet Connection Firewall が有効になっていなかった場合でも、このメソッドは正常終了します。

特定の接続に対する INetSharingConfiguration インターフェースを取得するには、 INetSharingManager::get_INetSharingConfigurationForINetConnection メソッドを使用します。

Windows XP with SP2: この API を呼び出すと、Windows ファイアウォールがオンになっているかどうかにかかわらず、指定したインターフェースのファイアウォールが無効になります。

vtbl 13 HRESULT EnableInternetFirewall()

EnableInternetFirewall メソッドは、この接続の Internet Connection Firewall を有効にします。

戻り値

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

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

戻り値 説明
E_ABORT
操作は停止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェースはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。

解説(Remarks)

このメソッドを呼び出すと、次の通知が表示されます。

%programname% が、インターネット上のセキュリティ上の脅威からコンピューターまたはネットワークを保護するために Internet Connection Firewall を有効にしようとしています。ただし、古いインターネットゲームの一部が正しく動作しなくなる可能性があります。Internet Connection Firewall を有効にしますか?

特定の接続に対する INetSharingConfiguration インターフェースを取得するには、 INetSharingManager::get_INetSharingConfigurationForINetConnection メソッドを使用します。

Windows XP with SP2: この API を呼び出した場合、指定したインターフェースのファイアウォールが有効になるのは、Windows ファイアウォールが有効になっているときのみです。

vtbl 14 HRESULT get_EnumPortMappings(SHARINGCONNECTION_ENUM_FLAGS Flags, INetSharingPortMappingCollection** ppColl)

get_EnumPortMappings メソッドは、IEnumNetSharingPortMapping インターフェースを取得します。このインターフェースを使用して、この接続のポートマッピングを列挙します。

FlagsSHARINGCONNECTION_ENUM_FLAGSinこのパラメーターには ICSSC_DEFAULT を指定する必要があります。
ppCollINetSharingPortMappingCollection**out正常終了時に INetSharingPortMappingCollection インターフェースを指すインターフェースポインターへのポインターです。

戻り値

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

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

戻り値 説明
E_ABORT
操作は中止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェースはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。

解説(Remarks)

特定の接続に対する INetSharingConfiguration インターフェースを取得するには、 INetSharingManager::get_INetSharingConfigurationForINetConnection メソッドを使用します。

vtbl 15 HRESULT AddPortMapping(LPWSTR bstrName, BYTE ucIPProtocol, WORD usExternalPort, WORD usInternalPort, DWORD dwOptions, LPWSTR bstrTargetNameOrIPAddress, ICS_TARGETTYPE eTargetType, INetSharingPortMapping** ppMapping)

この接続にサービスのポートマッピングを追加します。

bstrNameLPWSTRinこのポートマッピングの名前を格納する BSTR 変数へのポインターです。
ucIPProtocolBYTEin

ポートマッピングに設定する IP プロトコルを指定します。IP プロトコルは次のいずれかの値です。

NAT_PROTOCOL_TCP

NAT_PROTOCOL_UDP

usExternalPortWORDinこのポートマッピングの外部ポートを指定します。
usInternalPortWORDinこのポートマッピングの内部ポートを指定します。
dwOptionsDWORDinこのパラメーターは予約されており、現時点では使用されません。
bstrTargetNameOrIPAddressLPWSTRinこのポートマッピングの対象コンピューターの名前を格納する BSTR 変数へのポインターです。対象の名前または対象の IP アドレスのいずれか一方のみを指定します(両方は指定できません)。
eTargetTypeICS_TARGETTYPEin対象の種類を示します。
ppMappingINetSharingPortMapping**out正常終了時に、そのポートマッピングの INetSharingPortMapping インターフェースを指すポインターへのポインターです。

戻り値

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

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

戻り値 説明
E_ABORT
操作は中止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェースはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。

解説(Remarks)

追加された直後、新しいマッピングは無効の状態です。新しいマッピングを有効にするには、 INetSharingPortMapping::Enable を使用します。

追加後、新しい定義は ICS/ICF のユーザーインターフェースのポートマッピング一覧に表示されます。

特定の接続に対する INetSharingConfiguration インターフェースを取得するには、 INetSharingManager::get_INetSharingConfigurationForINetConnection メソッドを使用します。

vtbl 16 HRESULT RemovePortMapping(INetSharingPortMapping* pMapping)

RemovePortMapping メソッドは、この接続のマッピング一覧からサービスのポートマッピングを削除します。

pMappingINetSharingPortMapping*in削除するポートマッピングの INetSharingPortMapping インターフェースへのポインターです。

戻り値

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

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

戻り値 説明
E_ABORT
操作は中止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェースはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。

解説(Remarks)

このメソッドを呼び出すと、ICS/ICF のユーザーインターフェースのマッピング一覧からも、このポートマッピングの名前が削除されます。

特定の接続に対する INetSharingConfiguration インターフェースを取得するには、 INetSharingManager::get_INetSharingConfigurationForINetConnection メソッドを使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_INetSharingConfiguration "{C08956B6-1CD3-11D1-B1C5-00805FC1270E}"
#usecom global INetSharingConfiguration IID_INetSharingConfiguration "{}"
#comfunc global INetSharingConfiguration_get_SharingEnabled           7 var
#comfunc global INetSharingConfiguration_get_SharingConnectionType    8 var
#comfunc global INetSharingConfiguration_DisableSharing               9
#comfunc global INetSharingConfiguration_EnableSharing                10 int
#comfunc global INetSharingConfiguration_get_InternetFirewallEnabled  11 var
#comfunc global INetSharingConfiguration_DisableInternetFirewall      12
#comfunc global INetSharingConfiguration_EnableInternetFirewall       13
#comfunc global INetSharingConfiguration_get_EnumPortMappings         14 int,sptr
#comfunc global INetSharingConfiguration_AddPortMapping               15 wstr,int,int,int,int,wstr,int,sptr
#comfunc global INetSharingConfiguration_RemovePortMapping            16 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。