IWDFUsbTargetDevice::RetrieveDescriptor 메서드(wudfusb.h)

[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 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 필드에 해당합니다. (이 리소스는 일부 언어에서 사용할 수 없을 수 있습니다.

및 국가)를 선택합니다. 이러한 값 중 일부는 _URB_CONTROL_DESCRIPTOR_REQUEST 구조체의 DescriptorType 멤버에 대한 설명에 나열됩니다.

[in] Index

유니버설 직렬 버스 사양에 따라 설명자의 인덱스입니다. (이 리소스는 일부 언어에서 사용할 수 없을 수 있습니다.

및 국가)를 선택합니다.

[in] LanguageID

UMDF 드라이버가 문자열 설명자를 요청하는 경우 언어의 식별자입니다. 그렇지 않으면 이 매개 변수는 0입니다.

[in, out] BufferLength

입력 시 버퍼 가 가리키는 버퍼의 크기(바이트)를 포함하는 변수에 대한 포인터입니다. 작업이 성공하면 변수는 프레임워크가 버퍼에 복사한 바이트 수를 받습니다.

[out] Buffer

USB 설명자를 수신하는 호출자 제공 버퍼에 대한 포인터입니다. 버퍼 형식은 DescriptorType에 지정된 값과 일치해야 합니다.

반환 값

RetrieveDescriptor 는 다음 값 중 하나를 반환합니다.

반환 코드 설명
S_ok

RetrieveDescriptor 가 USB 설명자를 성공적으로 검색했습니다.

E_OUTOFMEMORY

RetrieveDescriptor 에서 할당 오류가 발생했습니다.

Winerror.h에 정의된 오류 코드
이 값은 WinUsb API가 반환한 오류 코드에 해당합니다.

설명

DescriptorType 매개 변수에 대해 UMDF 드라이버가 전달할 수 있는 유효한 설명자 형식에 대한 자세한 내용은 WinUsb_GetDescriptor 함수를 참조하세요.

RetrieveDescriptor 메서드는 UMDF 요청을 생성하고 I/O 대상에 요청을 동기적으로 보냅니다.

예제

다음 코드 예제에서는 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

추가 정보

IWDFUsbTargetDevice

WinUsb_GetDescriptor