Partager via


Exécution d’opérations de contrôle sur un objet client

Une fois qu’une application WSK (Winsock Kernel) s’est correctement attachée au sous-système WSK, elle peut effectuer des opérations de contrôle sur l’objet client ( WSK_CLIENT) retourné par le sous-système WSK pendant la pièce jointe. Ces opérations de contrôle ne sont pas spécifiques à un socket particulier, mais ont plutôt une portée plus générale. Pour plus d’informations sur chacune des opérations de contrôle qui peuvent être effectuées sur un objet client, consultez Opérations de contrôle client WSK.

Une application WSK effectue des opérations de contrôle client en appelant la fonction WskControlClient . La fonction WskControlClient est pointée vers laquelle pointe le membre WskControlClient de la structure WSK_PROVIDER_DISPATCH qui a été retournée par le sous-système WSK pendant la pièce jointe.

L’exemple de code suivant montre comment une application WSK peut utiliser l’opération de contrôle client WSK_TRANSPORT_LIST_QUERY pour récupérer une liste de transports réseau disponibles qui peuvent être spécifiés lors de la création d’un nouveau 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;
}