在用戶端物件上執行控制作業
在 Winsock Kernel (WSK) 應用程式成功連結至 WSK 子系統之後,它可以在附件期間由 WSK 子系統傳回的用戶端物件上執行控制作業 ( WSK_CLIENT) 。 這些控制作業不是特定通訊端特有的,而是具有較通用的範圍。 如需可在用戶端物件上執行之每個控制項作業的詳細資訊,請參閱 WSK 用戶端控制作業。
WSK 應用程式會呼叫 WskControlClient 函式來執行用戶端控制作業。 WskControlClient函式是由附件期間 WSK 子系統所傳回之WSK_PROVIDER_DISPATCH結構的WskControlClient成員所指向。
下列程式碼範例示範 WSK 應用程式如何使用 WSK_TRANSPORT_LIST_QUERY 用戶端控制作業來擷取可在建立新通訊端時指定的可用網路傳輸清單。
// Function to retrieve a list of available network transports
NTSTATUS
GetTransportList(
PWSK_PROVIDER_NPI WskProviderNpi,
PWSK_TRANSPORT TransportList,
ULONG MaxTransports,
PULONG TransportsRetrieved
)
{
SIZE_T BytesRetrieved;
NTSTATUS Status;
// Perform client control operation
Status =
WskProviderNpi->Dispatch->
WskControlClient(
WskProviderNpi->Client,
WSK_TRANSPORT_LIST_QUERY,
0,
NULL,
MaxTransports * sizeof(WSK_TRANSPORT),
TransportList,
&BytesRetrieved,
NULL // No IRP for this control operation
);
// Convert bytes retrieved to transports retrieved
TransportsRetrieved = BytesRetrieved / sizeof(WSK_TRANSPORT);
// Return status of client control operation
return Status;
}