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 參數設定為零。
[in] OutputSize
OutputBuffer 參數所指向緩衝區的大小,以位元組為單位。
[out, optional] OutputBuffer
呼叫端配置的緩衝區,接收指定之控制作業所傳回的任何輸出數據。 如果指定的控制作業未傳回任何輸出數據,WSK 應用程式應該將此參數設定為 NULL ,並將 OutputSize 參數設定為零。
[out, optional] OutputSizeReturned
ULONG 型別變數的指標,接收 OutputBuffer 參數所指向之緩衝區中傳回的數據位元組數目。 WSK 應用程式應該將此指標設定為 NULL, 除非下列所有專案都成立:
- Irp 參數為 NULL。
- 正在執行的作業會傳回 OutputBuffer 參數指向之緩衝區中的輸出數據。
- 正在執行的作業所傳回的輸出數據位元組數目未知。
[in, out] Irp
WSK 子系統用來以異步方式完成控制作業的呼叫端配置 IRP 指標。 如需搭配 WSK 函式使用 IRP 的詳細資訊,請參閱 搭配 Winsock 核心函式使用 IRP。
此參數是必要的、是選擇性的,或必須是 NULL,視執行的特定用戶端控制作業而定。 如需每個支援的用戶端控件作業之此參數需求的詳細資訊,請參閱 WSK 用戶端控制作業。
傳回值
WskControlClient 會傳回下列其中一個 NTSTATUS 代碼:
傳回碼 | Description |
---|---|
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 函式配置緩衝區,它就無法釋放具有對應 ExFreeXxx 函式的記憶體,直到 IRP 完成之後。 如果 WSK 應用程式配置堆疊上的緩衝區,它就無法從呼叫 WskControlClient 函式的函式傳回,直到 IRP 完成之後。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。 |
目標平台 | Universal |
標頭 | wsk.h (包含 Wsk.h) |
IRQL | <= DISPATCH_LEVEL |