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 |
---|---|
|
SetPipePolicy 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’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 |