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 nuevos controladores UMDF deben escribirse mediante 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 a 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 del bus serie universal de. (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 del bus serie universal. (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 buffer. 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.

Un código de error definido en winerror.h
Este valor corresponde al código de error que devolvió la API de WinUsb.

Observaciones

Para obtener información sobre los tipos de descriptor válidos que un controlador UMDF puede pasar para el parámetro DescriptorType, consulte 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 Valor
fin del soporte técnico No disponible en UMDF 2.0 y versiones posteriores.
de la plataforma de destino de Escritorio
versión mínima de UMDF 1.5
encabezado de wudfusb.h (incluya Wudfusb.h)
DLL de WUDFx.dll

Consulte también

IWDFUsbTargetDevice

WinUsb_GetDescriptor