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 |
---|---|
|
SetPipePolicy a correctement défini la stratégie de canal WinUsb. |
|
SetPipePolicy a rencontré un échec d’allocation. |
|
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 |