Partager via


IWDFUsbTargetPipe ::SetPipePolicy, méthode (wudfusb.h)

[Avertissement : UMDF 2 est la dernière version de UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide de UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et il existe une prise en charge limitée de UMDF 1 sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Bien démarrer avec UMDF.]

La méthode SetPipePolicy définit la stratégie de canal WinUsb.

Syntaxe

HRESULT SetPipePolicy(
  [in] ULONG PolicyType,
  [in] ULONG ValueLength,
  [in] PVOID Value
);

Paramètres

[in] PolicyType

Type de stratégie de canal WinUsb définie par le pilote UMDF.

[in] ValueLength

Taille, en octets, de la mémoire tampon qui SetPipePolicy fournit pour valeur.

[in] Value

Pointeur vers la mémoire tampon qui contient la stratégie de canal WinUsb.

Valeur de retour

SetPipePolicy retourne l’une des valeurs suivantes :

Retourner le code Description
S_OK

SetPipePolicy correctement défini la stratégie de canal WinUsb.

E_OUTOFMEMORY

SetPipePolicy a rencontré un échec d’allocation.

Code d’erreur défini dans Winerror.h
Cette valeur correspond au code d’erreur retourné par l’API WinUsb.

Remarques

La stratégie de canal contrôle le comportement du canal USB (par exemple, les délais d’attente, la gestion des paquets courts, etc.).

Pour plus d’informations sur les types et valeurs de stratégie valides qu’un pilote UMDF peut transmettre pour les paramètres PolicyType et Valeur, consultez la fonction WinUsb_SetPipePolicy.

Pour plus d’informations sur le comportement des stratégies de canal, consultez fonctions WinUSB pour la modification de la stratégie de canal.

La méthode SetPipePolicy génère une requête UMDF et envoie de manière synchrone la requête à la cible d’E/S.

Exemples

L’exemple de code suivant définit la stratégie pour les canaux d’entrée et de sortie.

HRESULT
CMyDevice::ConfigureUsbIoTargets(
    )
{
    HRESULT                 hr;
    USB_INTERFACE_DESCRIPTOR pInterface;
    WINUSB_PIPE_INFORMATION pipe;
    BOOL                    policy;
    DWORD                   err;
    BOOL                    result;
    LONG                    i;
    LONG                    timeout;
    ULONG                   length;

    length = sizeof(UCHAR);
    hr = m_pIUsbTargetDevice->RetrieveDeviceInformation(DEVICE_SPEED, 
                                                        &length,
                                                        &m_Speed);
    if (FAILED(hr)) {
        // Print out error.
    }
    if (SUCCEEDED(hr)) {
        // Print out device speed.
    }
    //
    // Set timeout policies for input and output pipes.
    //
    if (SUCCEEDED(hr))  {
       timeout = ENDPOINT_TIMEOUT;
       hr = m_pIUsbInputPipe->SetPipePolicy(PIPE_TRANSFER_TIMEOUT,
                                            sizeof(timeout),
                                            &timeout);
       if (FAILED(hr)) {
            // Print out cannot set timeout policy for input pipe.
       }
    }
    if (SUCCEEDED(hr))  {
       timeout = ENDPOINT_TIMEOUT;
       hr = m_pIUsbOutputPipe->SetPipePolicy(PIPE_TRANSFER_TIMEOUT,
                                             sizeof(timeout),
                                             &timeout);
       if (FAILED(hr))  {
            // Print out cannot set timeout policy for output pipe.
       }
    }
 return hr;
}

Exigences

Exigence Valeur
fin du support Indisponible dans UMDF 2.0 et versions ultérieures.
plateforme cible Bureau
version minimale de UMDF 1.5
d’en-tête wudfusb.h (include Wudfusb.h)
DLL WUDFx.dll

Voir aussi

IWDFUsbTargetPipe

IWDFUsbTargetPipe ::RetrievePipePolicy

WinUsb_SetPipePolicy