Compartir a través de


Realizar operaciones de control en un objeto de cliente

Después de que una aplicación de Winsock Kernel (WSK) se haya asociado correctamente al subsistema WSK, puede realizar operaciones de control en el objeto de cliente ( WSK_CLIENT) devuelto por el subsistema WSK durante los datos adjuntos. Estas operaciones de control no son específicas de un socket determinado, sino que tienen un ámbito más general. Para obtener más información sobre cada una de las operaciones de control que se pueden realizar en un objeto de cliente, vea Operaciones de control de cliente de WSK.

Una aplicación WSK realiza operaciones de control de cliente mediante una llamada a la función WskControlClient . La función WskControlClient apunta al miembro WskControlClient de la estructura WSK_PROVIDER_DISPATCH que devolvió el subsistema WSK durante los datos adjuntos.

En el ejemplo de código siguiente se muestra cómo una aplicación WSK puede usar la operación de control de cliente WSK_TRANSPORT_LIST_QUERY para recuperar una lista de transportes de red disponibles que se pueden especificar al crear un nuevo 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;
}