Esecuzione di operazioni di controllo in un oggetto client
Dopo aver collegato correttamente un'applicazione Winsock Kernel (WSK) al sottosistema WSK, può eseguire operazioni di controllo sull'oggetto client ( WSK_CLIENT) restituito dal sottosistema WSK durante l'allegato. Queste operazioni di controllo non sono specifiche di un socket specifico, ma hanno invece un ambito più generale. Per altre informazioni su ognuna delle operazioni di controllo che possono essere eseguite su un oggetto client, vedere Operazioni di controllo client WSK.
Un'applicazione WSK esegue operazioni di controllo client chiamando la funzione WskControlClient . La funzione WskControlClient viene puntata dal membro WskControlClient della struttura WSK_PROVIDER_DISPATCH restituita dal sottosistema WSK durante l'allegato.
Nell'esempio di codice seguente viene illustrato come un'applicazione WSK può usare l'operazione di controllo client WSK_TRANSPORT_LIST_QUERY per recuperare un elenco di trasporti di rete disponibili che possono essere specificati durante la creazione di un nuovo socket.
// 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;
}