Condividi tramite


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
S_OK

SetPipePolicy imposta correttamente i criteri della pipe WinUsb.

E_OUTOFMEMORY

SetPipePolicy ha rilevato un errore di allocazione.

Codice di errore definito in Winerror.h
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

Vedi anche

IWDFUsbTargetPipe

IWDFUsbTargetPipe::RetrievePipePolicy

WinUsb_SetPipePolicy