Compartir a través de


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
S_OK

RetrieveDescriptor recuperó correctamente el descriptor USB.

E_OUTOFMEMORY

RetrieveDescriptor encontró un error de asignación.

Código de error definido en Winerror.h
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

Consulte también

IWDFUsbTargetDevice

WinUsb_GetDescriptor