IWDFUsbTargetPipe::SetPipePolicy 方法 (wudfusb.h)
[警告: UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 未向 UMDF 1 添加新功能,并且较新版本的 Windows 10 上对 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 返回以下值之一:
返回代码 | 说明 |
---|---|
|
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 |