WdfUsbTargetDeviceQueryUsbCapability 함수(wdfusb.h)

[KMDF 및 UMDF에 적용]

WdfUsbTargetDeviceQueryUsbCapability 메서드는 호스트 컨트롤러 및 USB 드라이버 스택이 특정 기능을 지원하는지 여부를 결정합니다.

구문

NTSTATUS WdfUsbTargetDeviceQueryUsbCapability(
  [in]            WDFUSBDEVICE UsbDevice,
  [in]            const GUID   *CapabilityType,
  [in]            ULONG        CapabilityBufferLength,
  [out, optional] PVOID        CapabilityBuffer,
  [out, optional] PULONG       ResultLength
);

매개 변수

[in] UsbDevice

USB 디바이스 개체에 대한 핸들입니다.

[in] CapabilityType

클라이언트 드라이버가 정보를 검색하려는 기능을 나타내는 GUID에 대한 포인터입니다. 가능한 PGUID 값은 다음과 같습니다.

  • GUID_USB_CAPABILITY_CHAINED_MDLS
  • GUID_USB_CAPABILITY_STATIC_STREAMS
  • GUID_USB_CAPABILITY_SELECTIVE_SUSPEND
  • GUID_USB_CAPABILITY_FUNCTION_SUSPEND
  • GUID_USB_CAPABILITY_DEVICE_CONNECTION_HIGH_SPEED_COMPATIBLE
  • GUID_USB_CAPABILITY_DEVICE_CONNECTION_SUPER_SPEED_COMPATIBLE
설명에서 자세한 내용을 참조하세요.

[in] CapabilityBufferLength

CapabilityBuffer가 가리키는 버퍼의 길이(바이트)입니다.

[out, optional] CapabilityBuffer

요청된 USB 기능을 수신하기 위해 호출자가 할당한 버퍼에 대한 포인터입니다. 이 매개 변수는 선택적 요소입니다. CapabilityBufferLength가 0이면 이 매개 변수는 NULL이어야 합니다. 마찬가지로 CapabilityBufferLength 가 0이 아닌 경우 이 매개 변수를 제공해야 합니다. 이 매개 변수는 USBD_QueryUsbCapability 루틴의 OutputBuffer 매개 변수에 해당합니다.

[out, optional] ResultLength

반환된 기능의 크기(바이트)를 포함하는 위치에 대한 포인터입니다. 이 매개 변수는 선택적 요소입니다.

반환 값

WdfUsbTargetDeviceQueryUsbCapability 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INVALID_DEVICE_STATE
USB 디바이스 개체 핸들이 잘못되었습니다.
STATUS_INSUFFICIENT_RESOURCES
메모리가 부족했습니다.
STATUS_INVALID_PARAMETER
호출자가 잘못된 매개 변수 값을 전달했습니다.
  • UsbDevice 또는 CapabilityType 이 NULL입니다.
  • CapabilityBuffer 는 NULL이지만 CapabilityBufferLength 에는 0이 아닌 값이 포함됩니다. 반대로 호출자는 CapabilityBuffer 를 제공했지만 CapabilityBufferLength 는 0입니다.
STATUS_NOT_IMPLEMENTED
지정된 기능은 기본 USB 드라이버 스택에서 지원되지 않습니다.
STATUS_NOT_SUPPORTED
지정된 기능은 호스트 컨트롤러 하드웨어에서 지원되지 않습니다.
 

이 메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.

설명

WdfUsbTargetDeviceQueryUsbCapability를 호출하기 전에 드라이버는 WdfUsbTargetDeviceCreateWithParameters를 호출하여 기본 USB 드라이버 스택에 등록해야 합니다.

드라이버의 EvtDevicePrepareHardware 콜백 함수가 호출된 후 WdfUsbTargetDeviceQueryUsbCapability를 호출해야 합니다.

다음 표에서는 KMDF 기반 USB 클라이언트 드라이버가 WdfUsbTargetDeviceQueryUsbCapability 호출을 통해 쿼리할 수 있는 USB 관련 기능에 대해 설명합니다.

기능 GUID Description
GUID_USB_CAPABILITY_CHAINED_MDLS Windows 8 새 USB 드라이버 스택은 KMDF 기반 USB 클라이언트 드라이버에서 연결된 MDL(MDL 참조)을 수락할 수 있습니다.

USB 드라이버 스택의 연결된 MDL 기능에 대한 자세한 내용은 연결된 MDL을 보내는 방법을 참조하세요.

이 GUID는 KMDF 드라이버에만 적용됩니다.

GUID_USB_CAPABILITY_STATIC_STREAMS USB 2.0 이하에서는 단일 데이터 스트림만 대량 엔드포인트를 통해 전송을 지원하는 반면, USB 3.0에서는 대량 엔드포인트를 통해 여러 데이터 스트림을 보내고 받을 수 있습니다.

스트림 열기에 대한 자세한 내용은 USB 대량 엔드포인트에서 정적 스트림을 열고 닫는 방법을 참조하세요.

이 GUID는 KMDF 드라이버에만 적용됩니다.

GUID_USB_CAPABILITY_FUNCTION_SUSPEND USB(유니버설 직렬 버스) 3.0 사양은 함수 일시 중단이라는 새로운 기능을 정의합니다. 이 기능을 사용하면 복합 디바이스의 개별 함수가 다른 함수와 독립적으로 저전력 상태로 진입할 수 있습니다.

함수 일시 중단에 대한 자세한 내용은 복합 드라이버에서 함수 일시 중단을 구현하는 방법을 참조하세요.

이 GUID는 KMDF 드라이버에만 적용됩니다.

GUID_USB_CAPABILITY_SELECTIVE_SUSPEND 선택적 일시 중단에 대한 자세한 내용은 USB 선택적 일시 중단을 참조하세요.

이 GUID는 KMDF 드라이버에만 적용됩니다.

GUID_USB_CAPABILITY_DEVICE_CONNECTION_HIGH_SPEED_COMPATIBLE 버스가 고속 또는 그 이상으로 운행되는지 여부를 결정합니다.

이 GUID는 KMDF 및 UMDF 드라이버에 적용됩니다.

GUID_USB_CAPABILITY_DEVICE_CONNECTION_SUPER_SPEED_COMPATIBLE 버스가 SuperSpeed 이상에서 작동하고 있는지 여부를 결정합니다.

이 GUID는 KMDF 및 UMDF 드라이버에 적용됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
대상 플랫폼 유니버설
최소 KMDF 버전 1.11
최소 UMDF 버전 2.0
머리글 wdfusb.h(Wdfusb.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf)

추가 정보

USBD_QueryUsbCapability

WdfUsbTargetDeviceRetrieveInformation