PFN_WSK_CONTROL_CLIENT コールバック関数 (wsk.h)
WskControlClient 関数は、WSK クライアント オブジェクトに対して制御操作を実行します。
構文
PFN_WSK_CONTROL_CLIENT PfnWskControlClient;
NTSTATUS PfnWskControlClient(
[in] PWSK_CLIENT Client,
[in] ULONG ControlCode,
[in] SIZE_T InputSize,
[in, optional] PVOID InputBuffer,
[in] SIZE_T OutputSize,
[out, optional] PVOID OutputBuffer,
[out, optional] SIZE_T *OutputSizeReturned,
[in, out] PIRP Irp
)
{...}
パラメーター
[in] Client
WskCaptureProviderNPI 関数の WskProviderNpi パラメーターを介して返されたWSK_CLIENT構造体へのポインター。
[in] ControlCode
実行されている制御操作。 WSK アプリケーションでは、次のいずれかの制御コードを指定できます。
WSK_TRANSPORT_LIST_QUERY
使用可能なネットワーク トランスポートの一覧を取得します。
WSK_TRANSPORT_LIST_CHANGE
使用可能なネットワーク トランスポートの一覧に対する変更の通知を受け取ります。
WSK_CACHE_SD
セキュリティ記述子のキャッシュされたコピーを取得します。
WSK_RELEASE_SD
セキュリティ記述子のキャッシュされたコピーを解放します。
WSK_SET_STATIC_EVENT_CALLBACKS
指定したイベント コールバック関数をすべてのソケットで自動的に有効にします。
WSK_TDI_DEVICENAME_MAPPING
アドレス ファミリ、ソケットの種類、プロトコルの組み合わせを TDI トランスポートのデバイス名にマップします。
WSK_TDI_BEHAVIOR
WSK サブシステムがネットワーク I/O を TDI トランスポートに転送するかどうかを制御します。
[in] InputSize
InputBuffer パラメーターによって指されるバッファー内のデータのバイト数。
[in, optional] InputBuffer
指定した制御操作を実行するために必要な入力データを提供する呼び出し元によって割り当てられたバッファー。 指定した制御操作に入力データが必要ない場合、WSK アプリケーションはこのパラメーターを NULL に設定し、 InputSize パラメーターを 0 に設定する必要があります。
[in] OutputSize
OutputBuffer パラメーターによって指されるバッファーのサイズ (バイト単位)。
[out, optional] OutputBuffer
指定された制御操作によって返される出力データを受け取る呼び出し元によって割り当てられたバッファー。 指定した制御操作によって出力データが返されない場合、WSK アプリケーションはこのパラメーターを NULL に設定し、 OutputSize パラメーターを 0 に設定する必要があります。
[out, optional] OutputSizeReturned
OutputBuffer パラメーターによって指されるバッファーで返されるデータのバイト数を受け取る ULONG 型の変数へのポインター。 WSK アプリケーションでは、次のすべてが当てはまる場合を除き、このポインターを NULL に設定する必要があります。
- Irp パラメーターは NULL です。
- 実行されている操作は、 OutputBuffer パラメーターによって指されるバッファー内の出力データを返します。
- 実行されている操作によって返される出力データのバイト数が不明です。
[in, out] Irp
WSK サブシステムが制御操作を非同期的に完了するために使用する呼び出し元によって割り当てられた IRP へのポインター。 WSK 関数で IRP を使用する方法の詳細については、「 Winsock カーネル関数での IRP の使用」を参照してください。
このパラメーターは、実行されている特定のクライアント制御操作に応じて、必須、省略可能、または NULL である必要があります。 サポートされている各クライアント制御操作のこのパラメーターの要件の詳細については、「 WSK クライアント制御操作」を参照してください。
戻り値
WskControlClient は 、次のいずれかの NTSTATUS コードを返します。
リターン コード | 説明 |
---|---|
STATUS_SUCCESS | 制御操作が正常に完了しました。 WSK アプリケーションが Irp パラメーターで IRP へのポインターを指定した場合、IRP は成功状態で完了します。 |
STATUS_PENDING | WSK サブシステムが制御操作をすぐに完了できませんでした。 WSK サブシステムは、制御操作が完了した後に IRP を完了します。 コントロール操作の状態は、IRP の IoStatus.Status フィールドに返されます。 |
STATUS_BUFFER_OVERFLOW | 出力バッファーは、返されたデータを格納するのに十分な大きさではありません。 OutputSizeReturned パラメーターが指す変数には、必要なバッファー サイズが含まれています。 |
その他の状態コード | エラーが発生しました。 IRP は失敗状態で完了します。 |
注釈
各クライアント制御操作で入出力バッファーを使用する方法の詳細については、「 WSK クライアント制御操作」を参照してください。
WskControlClient 関数がSTATUS_PENDINGを返す場合は、InputBuffer パラメーターまたは OutputBuffer パラメーターが指すバッファーは、IRP が完了するまで有効なままである必要があります。 WSK アプリケーションが ExAllocateXxx 関数のいずれかを使用してバッファーを割り当てた場合、IRP が完了するまで、対応する ExFreeXxx 関数を使用してメモリを解放することはできません。 WSK アプリケーションがスタック上のバッファーを割り当てた場合、IRP が完了するまで 、WskControlClient 関数を呼び出す関数からを返すことはできません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wsk.h (Wsk.h を含む) |
IRQL | <= DISPATCH_LEVEL |