Метод IWDFUsbTargetDevice::RetrieveDescriptor (wudfusb.h)
[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с помощью UMDF.]
Метод RetrieveDescriptor извлекает дескриптор USB, который может описывать устройство, конфигурацию или строку.
Синтаксис
HRESULT RetrieveDescriptor(
[in] UCHAR DescriptorType,
[in] UCHAR Index,
[in] USHORT LanguageID,
[in, out] ULONG *BufferLength,
[out] PVOID Buffer
);
Параметры
[in] DescriptorType
Значение типа , указывающее тип возвращаемого дескриптора. Этот параметр соответствует полю bDescriptorType стандартного дескриптора устройства, значения которого описаны в спецификации универсальной последовательной шины . (Этот ресурс может быть недоступен на некоторых языках.
и страны.) Некоторые из этих значений перечислены в описании элемента DescriptorType структуры _URB_CONTROL_DESCRIPTOR_REQUEST .
[in] Index
Индекс дескриптора в соответствии со спецификацией универсальной последовательной шины . (Этот ресурс может быть недоступен на некоторых языках.
и страны.)
[in] LanguageID
Идентификатор языка, если драйвер UMDF запрашивает дескриптор строки; в противном случае этот параметр равен нулю.
[in, out] BufferLength
Указатель на переменную, которая на входных данных содержит размер буфера, на который указывает буфер , в байтах. Если операция выполнена успешно, переменная получает количество байтов, скопированных платформой в буфер.
[out] Buffer
Указатель на буфер, предоставленный вызывающим объектом, который получает дескриптор USB. Тип буфера должен соответствовать значению, указанному в descriptorType.
Возвращаемое значение
RetrieveDescriptor возвращает одно из следующих значений:
Код возврата | Описание |
---|---|
|
Метод RetrieveDescriptor успешно извлек дескриптор USB. |
|
В RetrieveDescriptor обнаружен сбой выделения. |
|
Это значение соответствует коду ошибки, возвращенной API WinUsb. |
Комментарии
Сведения о допустимых типах дескрипторов, которые драйвер UMDF может передать для параметра DescriptorType , см. в функции WinUsb_GetDescriptor .
Метод RetrieveDescriptor создает запрос UMDF и синхронно отправляет его в целевой объект ввода-вывода.
Примеры
В следующем примере кода извлекается дескриптор конфигурации USB.
HRESULT
CUmdfHidDevice::RetrieveConfigDescriptor(
__out_bcount(ConfigDescriptorCb) PUSB_CONFIGURATION_DESCRIPTOR *ConfigDescriptor,
__out ULONG *ConfigDescriptorCb
)
{
ULONG descriptorCb = sizeof(USB_CONFIGURATION_DESCRIPTOR);
USB_CONFIGURATION_DESCRIPTOR descriptorHeader;
PBYTE descriptorBuffer;
HRESULT hr;
//
// Get the configuration descriptor at index 0
//
hr = m_UsbTargetDevice->RetrieveDescriptor(
USB_CONFIGURATION_DESCRIPTOR_TYPE,
0,
0,
&descriptorCb,
&descriptorHeader
);
//
// Store the buffer in the output parameter, or delete it.
//
if (SUCCEEDED(hr)) {
*ConfigDescriptor = (PUSB_CONFIGURATION_DESCRIPTOR) (descriptorHeader);
*ConfigDescriptorCb = descriptorCb;
}
else {
delete[] descriptorHeader;
}
return hr;
}
Требования
Требование | Значение |
---|---|
Дата окончания поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Минимальная версия UMDF | 1.5 |
Верхняя часть | wudfusb.h (включая Wudfusb.h) |
DLL | WUDFx.dll |