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 |
---|---|
|
SetPipePolicy hat die WinUsb-Piperichtlinie erfolgreich festgelegt. |
|
Bei SetPipePolicy ist ein Zuordnungsfehler aufgetreten. |
|
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 |