IWDFUsbTargetPipe::SetPipePolicy-Methode (wudfusb.h)

[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 in neueren Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF.]

Die SetPipePolicy-Methode legt die WinUsb-Piperichtlinie fest.

Syntax

HRESULT SetPipePolicy(
  [in] ULONG PolicyType,
  [in] ULONG ValueLength,
  [in] PVOID Value
);

Parameter

[in] PolicyType

Der Typ der WinUsb-Piperichtlinie, die der UMDF-Treiber festlegt.

[in] ValueLength

Die Größe des Puffers in Bytes, den SetPipePolicy für Value bereitstellt.

[in] Value

Ein Zeiger auf den Puffer, der die WinUsb-Piperichtlinie enthält.

Rückgabewert

SetPipePolicy gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK

SetPipePolicy hat die WinUsb-Piperichtlinie erfolgreich festgelegt.

E_OUTOFMEMORY

Bei SetPipePolicy ist ein Zuordnungsfehler aufgetreten.

Ein Fehlercode, der in "Winerror.h" definiert ist
Dieser Wert entspricht dem Fehlercode, den die WinUsb-API zurückgegeben hat.

Hinweise

Die Piperichtlinie steuert das Verhalten der USB-Pipe (z. B. Timeouts, Behandeln kurzer Pakete usw.).

Weitere Informationen zu gültigen Richtlinientypen und Werten, die ein UMDF-Treiber für die Parameter PolicyType und Value übergeben kann, finden Sie in der funktion WinUsb_SetPipePolicy .

Informationen zum Verhalten der Piperichtlinien finden Sie unter WinUSB Functions for Pipe Policy Modification.

Die SetPipePolicy-Methode generiert eine UMDF-Anforderung und sendet die Anforderung synchron an das E/A-Ziel.

Beispiele

Im folgenden Codebeispiel wird die Richtlinie für Eingabe- und Ausgabepipes festgelegt.

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

Anforderungen

Anforderung Wert
Ende des Supports In UMDF 2.0 und höher nicht verfügbar.
Zielplattform Desktop
UMDF-Mindestversion 1.5
Kopfzeile wudfusb.h (schließen Sie Wudfusb.h ein)
DLL WUDFx.dll

Weitere Informationen

IWDFUsbTargetPipe

IWDFUsbTargetPipe::RetrievePipePolicy

WinUsb_SetPipePolicy