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 는 다음 값 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
|
RetrieveDescriptor 가 USB 설명자를 성공적으로 검색했습니다. |
|
RetrieveDescriptor 에서 할당 오류가 발생했습니다. |
|
이 값은 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 |