Ausführen von Steuerungsvorgängen für ein Clientobjekt
Nachdem eine WSK-Anwendung (Winsock Kernel) erfolgreich an das WSK-Subsystem angefügt wurde, kann sie Steuerungsvorgänge für das Clientobjekt ( WSK_CLIENT) ausführen, das vom WSK-Subsystem während der Anlage zurückgegeben wurde. Diese Steuerungsvorgänge sind nicht spezifisch für einen bestimmten Socket, sondern haben einen allgemeineren Bereich. Weitere Informationen zu den einzelnen Steuerelementvorgängen, die für ein Clientobjekt ausgeführt werden können, finden Sie unter WSK-Clientsteuerungsvorgänge.
Eine WSK-Anwendung führt Clientsteuerungsvorgänge durch Aufrufen der WskControlClient-Funktion aus. Die WskControlClient-Funktion wird vom WskControlClient-Element der WSK_PROVIDER_DISPATCH-Struktur angezeigt, die vom WSK-Subsystem während der Anlage zurückgegeben wurde.
Das folgende Codebeispiel zeigt, wie eine WSK-Anwendung den Clientsteuerungsvorgang WSK_TRANSPORT_LIST_QUERY verwenden kann, um eine Liste der verfügbaren Netzwerktransporte abzurufen, die beim Erstellen eines neuen Sockets angegeben werden können.
// 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;
}