Метод 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 предоставляет для параметра Value.
[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 (включая Wudfusb.h) |
DLL | WUDFx.dll |