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

IStaticPortMapping

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

公式ドキュメント

IStaticPortMapping インターフェイスは、特定のポートマッピングの情報を取得および変更するためのメソッドを提供します。

解説(Remarks)

UPnP テクノロジを使用する NAT API は、外部ポートとプロトコルの組み合わせによってポートマッピングを識別します。

メソッド 11

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

vtbl 7 HRESULT get_ExternalIPAddress(LPWSTR* pVal)

get_ExternalIPAddress メソッドは、NAT コンピューター上のこのポートマッピングに対する外部 IP アドレスを取得します。

pValLPWSTR*outNAT コンピューター上のこのポートマッピングに対する外部 IP アドレスを受け取る BSTR 変数へのポインターです。

戻り値

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

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

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

get_ExternalPort メソッドは、このポートマッピングに対する NAT コンピューター上の外部ポートを取得します。

pValINT*outこのポートマッピングに対する NAT コンピューター上の外部ポートを受け取る long 変数へのポインターです。

戻り値

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

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

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

get_InternalPort メソッドは、このポートマッピングに対するクライアントコンピューター上の内部ポートを取得します。

pValINT*outこのポートマッピングに対するクライアントコンピューター上の内部ポートを受け取る long 変数へのポインターです。

戻り値

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

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

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

get_Protocol メソッドは、このポートマッピングに関連付けられたプロトコルを取得します。

pValLPWSTR*outこのポートマッピングのプロトコルを受け取る BSTR 変数へのポインターです。プロトコルは "UDP" または "TCP" のいずれかです。

戻り値

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

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

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

get_InternalClient メソッドは、このポートマッピングの内部クライアントの名前を取得します。

pValLPWSTR*outこのポートマッピングの内部クライアントの名前を受け取る BSTR 変数へのポインターです。

戻り値

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

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

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

get_Enabled メソッドは、ポートマッピングが有効かどうかを取得します。

pValVARIANT_BOOL*outポートマッピングが有効かどうかを示す値を受け取る VARIANT_BOOL へのポインターです。ポートマッピングが有効な場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE になります。

戻り値

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

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

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

get_Description メソッドは、このポートマッピングに関連付けられた説明を取得します。

pValLPWSTR*out正常に復帰した場合に、このポートマッピングに関連付けられた説明を受け取る BSTR 変数へのポインターです。

戻り値

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

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

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

EditInternalClient メソッドは、このポートマッピングの内部クライアントプロパティを指定された値に設定します。

bstrInternalClientLPWSTRinこのポートマッピングの内部クライアントプロパティの新しい値を指定します。

戻り値

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

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

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

Enable メソッドは、このポートマッピングを有効または無効にします。

vbVARIANT_BOOLinポートマッピングを有効にするか無効にするかを示す値を指定します。ポートマッピングを有効にするには VARIANT_TRUE を、無効にするには VARIANT_FALSE を指定します。

戻り値

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

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

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

EditDescription メソッドは、このポートマッピングの説明プロパティを指定された値に設定します。

bstrDescriptionLPWSTRinこのポートマッピングの説明プロパティの新しい値を指定します。

戻り値

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

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

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

EditInternalPort メソッドは、このポートマッピングの内部ポートを設定します。

lInternalPortINTinこのポートマッピングの新しい内部ポートを指定します。

戻り値

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

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

戻り値 説明
E_ABORT
操作が中止されました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
パラメーターのいずれかが無効です。
E_NOINTERFACE
指定されたインターフェイスはサポートされていません。
E_NOTIMPL
指定されたメソッドは実装されていません。
E_OUTOFMEMORY
メソッドが必要なメモリを割り当てられませんでした。
E_POINTER
パラメーターとして渡されたポインターが無効です。
E_UNEXPECTED
不明な理由によりメソッドが失敗しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IStaticPortMapping "{6F10711F-729B-41E5-93B8-F21D0F818DF1}"
#usecom global IStaticPortMapping IID_IStaticPortMapping "{}"
#comfunc global IStaticPortMapping_get_ExternalIPAddress  7 var
#comfunc global IStaticPortMapping_get_ExternalPort       8 var
#comfunc global IStaticPortMapping_get_InternalPort       9 var
#comfunc global IStaticPortMapping_get_Protocol           10 var
#comfunc global IStaticPortMapping_get_InternalClient     11 var
#comfunc global IStaticPortMapping_get_Enabled            12 var
#comfunc global IStaticPortMapping_get_Description        13 var
#comfunc global IStaticPortMapping_EditInternalClient     14 wstr
#comfunc global IStaticPortMapping_Enable                 15 int
#comfunc global IStaticPortMapping_EditDescription        16 wstr
#comfunc global IStaticPortMapping_EditInternalPort       17 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。