共用方式為


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 之後,Microsoft Windows 版本不支援 TDI。 請改用 Windows 篩選平臺Winsock 核心
 

規格需求

需求
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。
目標平台 Universal
標頭 wsk.h (包含 Wsk.h)
IRQL <= DISPATCH_LEVEL

另請參閱

WSK 用戶端控制作業

WSK_CLIENT

WSK_PROVIDER_DISPATCH

WSK_PROVIDER_NPI

WSK_TRANSPORT

WskCaptureProviderNPI