Metodo IWDFUsbTargetPipe::SetPipePolicy (wudfusb.h)
[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre info, vedi Introduzione con UMDF.]
Il metodo SetPipePolicy imposta i criteri di pipe WinUsb.
Sintassi
HRESULT SetPipePolicy(
[in] ULONG PolicyType,
[in] ULONG ValueLength,
[in] PVOID Value
);
Parametri
[in] PolicyType
Tipo di criteri di pipe WinUsb impostati dal driver UMDF.
[in] ValueLength
Dimensione, in byte, del buffer fornito da SetPipePolicy per Value.
[in] Value
Puntatore al buffer che contiene i criteri di pipe WinUsb.
Valore restituito
SetPipePolicy restituisce uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
SetPipePolicy imposta correttamente i criteri della pipe WinUsb. |
|
SetPipePolicy ha rilevato un errore di allocazione. |
|
Questo valore corrisponde al codice di errore restituito dall'API WinUsb. |
Commenti
I criteri pipe controllano il comportamento della pipe USB ,ad esempio timeout, gestione di pacchetti brevi e così via.
Per altre informazioni sui tipi di criteri e i valori validi che un driver UMDF può passare per i parametri PolicyType e Value , vedere la funzione WinUsb_SetPipePolicy .
Per informazioni sul comportamento dei criteri di pipe, vedere Funzioni WinUSB per la modifica dei criteri di pipe.
Il metodo SetPipePolicy genera una richiesta UMDF e invia in modo sincrono la richiesta alla destinazione di I/O.
Esempio
Nell'esempio di codice seguente vengono impostati i criteri per le pipe di input e output.
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;
}
Requisiti
Requisito | Valore |
---|---|
Fine del supporto | Non disponibile in UMDF 2.0 e versioni successive. |
Piattaforma di destinazione | Desktop |
Versione UMDF minima | 1.5 |
Intestazione | wudfusb.h (include Wudfusb.h) |
DLL | WUDFx.dll |