Freigeben über


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;
}