Método IWDFUsbTargetDevice::RetrieveDescriptor (wudfusb.h)
[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción con UMDF.
El método RetrieveDescriptor recupera un descriptor USB, que puede describir un dispositivo, una configuración o una cadena.
Sintaxis
HRESULT RetrieveDescriptor(
[in] UCHAR DescriptorType,
[in] UCHAR Index,
[in] USHORT LanguageID,
[in, out] ULONG *BufferLength,
[out] PVOID Buffer
);
Parámetros
[in] DescriptorType
Valor que especifica el tipo de descriptor que se va a devolver. Este parámetro corresponde al campo bDescriptorType de un descriptor de dispositivo estándar, cuyos valores se describen en la especificación de Bus serie universal . (Es posible que este recurso no esté disponible en algunos idiomas
y países). Algunos de estos valores se enumeran en la descripción del miembro DescriptorType de la estructura _URB_CONTROL_DESCRIPTOR_REQUEST .
[in] Index
Índice del descriptor, según la especificación universal de Bus serie . (Es posible que este recurso no esté disponible en algunos idiomas
y países).
[in] LanguageID
Identificador del idioma, si el controlador UMDF solicita un descriptor de cadena; de lo contrario, este parámetro es cero.
[in, out] BufferLength
Puntero a una variable que, en la entrada, contiene el tamaño, en bytes, del búfer al que apunta el búfer . Si la operación se realiza correctamente, la variable recibe el número de bytes que el marco copió en el búfer.
[out] Buffer
Puntero a un búfer proporcionado por el autor de la llamada que recibe el descriptor USB. El tipo de búfer debe coincidir con el valor especificado en DescriptorType.
Valor devuelto
RetrieveDescriptor devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
|
RetrieveDescriptor recuperó correctamente el descriptor USB. |
|
RetrieveDescriptor encontró un error de asignación. |
|
Este valor corresponde al código de error que devolvió la API de WinUsb. |
Comentarios
Para obtener información sobre los tipos de descriptor válidos que un controlador UMDF puede pasar para el parámetro DescriptorType , vea la función WinUsb_GetDescriptor .
El método RetrieveDescriptor genera una solicitud UMDF y envía sincrónicamente la solicitud al destino de E/S.
Ejemplos
En el ejemplo de código siguiente se recupera un descriptor de configuración 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;
}
Requisitos
Requisito | Value |
---|---|
Finalización del soporte técnico | No disponible en UMDF 2.0 y versiones posteriores. |
Plataforma de destino | Escritorio |
Versión mínima de UMDF | 1.5 |
Encabezado | wudfusb.h (incluya Wudfusb.h) |
Archivo DLL | WUDFx.dll |