IWSDTransportAddress
COM公式ドキュメント
IP ベースのトランスポートアドレスを表します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
このトランスポートアドレスに関連付けられた IP ポート番号を取得します。
| pwPort | WORD* | out | アドレスオブジェクトに関連付けられたポート番号。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
返される可能性のある値には、以下が含まれます (ただしこれらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| pwPort が NULL です。 |
このトランスポートアドレスに対して IP ポート番号のみを設定します。
| wPort | WORD | in | アドレスオブジェクトの IP ポート番号。 |
戻り値
返される可能性のある値には、以下が含まれます (ただしこれらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 |
アドレスオブジェクトの文字列表現へのポインターを取得します。(IWSDTransportAddress.GetTransportAddress)
| ppszAddress | LPWSTR* | out | アドレスオブジェクトの文字列表現。このポインターは解放しないでください。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
返される可能性のある値には、以下が含まれます (ただしこれらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| ppszAddress が NULL です。 | |
| トランスポートアドレスがまだ設定されていません。トランスポートアドレスを設定するには、NULL 以外のアドレスを指定して SetTransportAddress を呼び出してください。 |
解説(Remarks)
このメソッドが返す文字列には、IPv4 アドレス、または "fe80::1" のような角かっこで囲まれていない IPv6 アドレスが含まれる場合があります。また、"[fe80::1]:1234" のようにポートを含む角かっこ付きの IPv6 アドレスが含まれる場合もあります。呼び出し側は、両方の可能性を考慮して文字列を慎重に解析する必要があります。
アドレスオブジェクトの文字列表現へのポインターを取得します。(IWSDTransportAddress.GetTransportAddressEx)
| fSafe | BOOL | in | IPv6 アドレスのスコープ識別子を、返される ppszAddress 文字列に含めるかどうかを指定します。たとえば、アドレスオブジェクトが IPv6 リンクローカルアドレスを表しており、fSafe が FALSE の場合、返される ppszAddress 文字列に IPv6 スコープ識別子が含まれます。 アドレスオブジェクトが IPv4 アドレスまたはホスト名を表す場合、このパラメーターは無視されます。 |
| ppszAddress | LPWSTR* | out | アドレスオブジェクトの文字列表現。このポインターは解放しないでください。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
返される可能性のある値には、以下が含まれます (ただしこれらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| ppszAddress が NULL です。 | |
| トランスポートアドレスがまだ設定されていません。トランスポートアドレスを設定するには、NULL 以外のアドレスを指定して SetTransportAddress を呼び出してください。 |
解説(Remarks)
このメソッドが返す文字列には、IPv4 アドレス、または "fe80::1" のような角かっこで囲まれていない IPv6 アドレスが含まれる場合があります。また、"[fe80::1]:1234" のようにポートを含む角かっこ付きの IPv6 アドレスが含まれる場合もあります。呼び出し側は、両方の可能性を考慮して文字列を慎重に解析する必要があります。
トランスポートアドレスの文字列表現を設定します。
| pszAddress | LPWSTR | inoptional | トランスポートアドレスの文字列表現。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
返される可能性のある値には、以下が含まれます (ただしこれらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| ppszAddress が指すアドレス文字列の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えている、ppszAddress が NULL である、または ppszAddress の形式が認識されませんでした。 | |
| 操作を完了するためのメモリが不足しています。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWSDTransportAddress "{70D23498-4EE6-4340-A3DF-D845D2235467}" #usecom global IWSDTransportAddress IID_IWSDTransportAddress "{}" #comfunc global IWSDTransportAddress_GetPort 5 var #comfunc global IWSDTransportAddress_SetPort 6 int #comfunc global IWSDTransportAddress_GetTransportAddress 7 var #comfunc global IWSDTransportAddress_GetTransportAddressEx 8 int,var #comfunc global IWSDTransportAddress_SetTransportAddress 9 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWSDTransportAddress "{70D23498-4EE6-4340-A3DF-D845D2235467}" #usecom global IWSDTransportAddress IID_IWSDTransportAddress "{}" #comfunc global IWSDTransportAddress_GetPort 5 sptr #comfunc global IWSDTransportAddress_SetPort 6 int #comfunc global IWSDTransportAddress_GetTransportAddress 7 sptr #comfunc global IWSDTransportAddress_GetTransportAddressEx 8 int,sptr #comfunc global IWSDTransportAddress_SetTransportAddress 9 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。