Partager via


Méthode IWDFUsbTargetPipe ::SetPipePolicy (wudfusb.h)

[Avertissement : UMDF 2 est la dernière version d’UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide d’UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et la prise en charge d’UMDF 1 est limitée sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Prise en main 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 que le pilote UMDF définit.

[in] ValueLength

Taille, en octets, de la mémoire tampon que SetPipePolicy fournit pour Value.

[in] Value

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

Valeur retournée

SetPipePolicy retourne l’une des valeurs suivantes :

Code de retour Description
S_OK

SetPipePolicy a 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’expiration, la gestion des paquets courts, etc.).

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

Pour plus d’informations sur le comportement des stratégies de canal, consultez WinUSB Functions for Pipe Policy Modification.

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

Configuration requise

Condition requise Valeur
Fin de la prise en charge Non disponible dans UMDF 2.0 et versions ultérieures.
Plateforme cible Desktop (Expérience utilisateur)
Version UMDF minimale 1.5
En-tête wudfusb.h (inclure Wudfusb.h)
DLL WUDFx.dll

Voir aussi

IWDFUsbTargetPipe

IWDFUsbTargetPipe ::RetrievePipePolicy

WinUsb_SetPipePolicy