IWDFUsbTargetPipe::SetPipePolicy 方法 (wudfusb.h)
[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 來撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #D5587BA883A5B445E9053CF823834FDD8 上不支援 UMDF 1。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱使用 UMDF 使用者入門。]
SetPipePolicy 方法會設定 WinUsb 管道原則。
語法
HRESULT SetPipePolicy(
[in] ULONG PolicyType,
[in] ULONG ValueLength,
[in] PVOID Value
);
參數
[in] PolicyType
UMDF 驅動程式設定的 WinUsb 管道原則類型。
[in] ValueLength
SetPipePolicy 針對 Value 提供的緩衝區大小,以位元組為單位。
[in] Value
包含 WinUsb 管道原則之緩衝區的指標。
傳回值
SetPipePolicy 會傳回下列其中一個值:
傳回碼 | Description |
---|---|
|
SetPipePolicy 已成功設定 WinUsb 管道原則。 |
|
SetPipePolicy 發生配置失敗。 |
|
這個值對應於 WinUsb API 傳回的錯誤碼。 |
備註
管道原則會控制USB管道 (的行為,例如逾時、處理簡短封包等等) 。
如需 UMDF 驅動程式可以針對 PolicyType 和 Value 參數傳遞之有效原則類型和值的詳細資訊,請參閱 WinUsb_SetPipePolicy 函式。
如需管道原則行為的相關信息,請參閱 用於修改管道原則的 WinUSB 函式。
SetPipePolicy 方法會產生 UMDF 要求,並同步將要求傳送至 I/O 目標。
範例
下列程式代碼範例會設定輸入和輸出管道的原則。
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;
}
規格需求
需求 | 值 |
---|---|
終止支援 | UMDF 2.0 和更新版本中無法使用。 |
目標平台 | 桌面 |
最低UMDF版本 | 1.5 |
標頭 | wudfusb.h (包括 Wudfusb.h) |
Dll | WUDFx.dll |