PFN_WSK_GET_LOCAL_ADDRESS コールバック関数 (wsk.h)
WskGetLocalAddress 関数は、ソケットのローカル トランスポート アドレスを取得します。
構文
PFN_WSK_GET_LOCAL_ADDRESS PfnWskGetLocalAddress;
NTSTATUS PfnWskGetLocalAddress(
[in] PWSK_SOCKET Socket,
[out] PSOCKADDR LocalAddress,
[in, out] PIRP Irp
)
{...}
パラメーター
[in] Socket
クエリ対象のソケットのソケット オブジェクトを指定する WSK_SOCKET 構造体へのポインター。
[out] LocalAddress
ソケットのローカル トランスポート アドレスを受け取る呼び出し元によって割り当てられたバッファーへのポインター。 バッファーは、ページ以外のメモリに配置する必要があります。 また、バッファーは、WSK アプリケーションがソケットの作成時に指定したアドレス ファミリに対応する特定の SOCKADDR 構造体型を格納するのに十分な大きさにする必要があります。
WSK アプリケーションがリッスン ソケットで受け入れた接続指向ソケットの場合、アドレス ファミリは、WSK アプリケーションがリッスン ソケットの作成時に指定したアドレス ファミリと同じです。
[in, out] Irp
WSK サブシステムが非同期的に取得操作を完了するために使用する呼び出し元によって割り当てられた IRP へのポインター。 WSK 関数で IRP を使用する方法の詳細については、「Winsock カーネル関数での IRP の使用」を参照してください。
戻り値
WskGetLocalAddress は、次のいずれかの NTSTATUS コードを返します。
リターン コード | 形容 |
---|---|
|
ソケットのローカル トランスポート アドレスが正常に取得されました。 IRP は成功状態で完了します。 |
|
WSK サブシステムは、ソケットのローカル トランスポート アドレスをすぐに取得できませんでした。 WSK サブシステムは、ソケットのローカル トランスポート アドレスを取得した後、IRP を完了します。 取得操作の状態は、IRP の IoStatus.Status フィールドに返されます。 |
|
ソケットはローカル トランスポート アドレスにバインドされていません。 IRP は失敗状態で完了します。 |
|
ソケットは機能しなくなりました。 IRP は失敗状態で完了します。 WSK アプリケーションは、WskCloseSocket 関数を呼び出して、できるだけ早くソケットを閉じる必要があります。 |
|
エラーが発生しました。 IRP は失敗状態で完了します。 |
備考
WSK アプリケーションは、ローカル トランスポート アドレスにバインドされているソケットでのみ、WskGetLocalAddress 関数を呼び出すことができます。
リッスン、データグラム、またはストリーム ソケットは、WSK アプリケーションが wskBind 関数 呼び出すときにローカル トランスポート アドレスにバインドされます。
接続指向ソケットは、次のいずれかの方法でローカル トランスポート アドレスにバインドされます。
- WSK アプリケーションは、WskBind 関数を呼び出します。
- WSK アプリケーションは、WskSocketConnect 関数を呼び出してソケットを作成、バインド、接続します。
- WSK アプリケーションがリッスン しているソケットで受信接続要求を受け入れると、WSK サブシステムはソケットをバインドします。
WskGetLocalAddress 関数がSTATUS_PENDINGを返す場合は、IRP が完了するまで、LocalAddress パラメーターが指すバッファーは有効なままである必要があります。 WSK アプリケーションが、ExAllocateXxx 関数のいずれかを使用してバッファーを割り当てた場合、IRP が完了するまで、対応する ExFreeXxx 関数を使用してメモリを解放することはできません。 WSK アプリケーションがスタック上のバッファーを割り当てた場合、IRP が完了するまで、WskGetLocalAddress 関数を呼び出す関数から戻ることはできません。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wsk.h (Wsk.h を含む) |
IRQL | <= DISPATCH_LEVEL |
関連項目
SOCKADDR の
WSK_PROVIDER_CONNECTION_DISPATCH WSK_PROVIDER_DATAGRAM_DISPATCHWskAccept の
WskAcceptEvent の
WskBind の
WskCloseSocket の
WskConnect の
WskGetRemoteAddress の
WskSocketConnect の