Метод IWDFUsbTargetPipe::SetPipePolicy (wudfusb.h)
[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]
Метод SetPipePolicy задает политику канала WinUsb.
HRESULT SetPipePolicy(
[in] ULONG PolicyType,
[in] ULONG ValueLength,
[in] PVOID Value
);
[in] PolicyType
Тип политики канала WinUsb, которую задает драйвер UMDF.
[in] ValueLength
Размер буфера, SetPipePolicy для значения.
[in] Value
Указатель на буфер, содержащий политику канала WinUsb.
SetPipePolicy возвращает одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
SetPipePolicy успешно задать политику канала WinUsb. |
|
SetPipePolicy возникла ошибка выделения. |
|
Это значение соответствует коду ошибки, возвращенной API WinUsb. |
Политика канала управляет поведением USB-канала (например, время ожидания, обработка коротких пакетов и т. д.).
Дополнительные сведения о допустимых типах политик и значениях, которые драйвер UMDF может передавать для параметров PolicyType и Value, см. в функции WinUsb_SetPipePolicy.
Сведения о поведении политик канала см. в функциях WinUSB для изменения политики канала.
Метод SetPipePolicy создает запрос UMDF и синхронно отправляет запрос в целевой объект ввода-вывода.
В следующем примере кода устанавливается политика входных и выходных каналов.
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 (include Wudfusb.h) |
DLL | WUDFx.dll |