EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY 콜백 함수(udecxwdfdevice.h)

에뮬레이트된 USB 호스트 컨트롤러에서 지원하는 기능을 결정하는 UDE 클라이언트 드라이버의 구현입니다.

구문

EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY EvtUdecxWdfDeviceQueryUsbCapability;

NTSTATUS EvtUdecxWdfDeviceQueryUsbCapability(
  [in]            WDFDEVICE UdecxWdfDevice,
  [in]            PGUID CapabilityType,
  [in]            ULONG OutputBufferLength,
  [out, optional] PVOID OutputBuffer,
  [out]           PULONG ResultLength
)
{...}

매개 변수

[in] UdecxWdfDevice

컨트롤러를 나타내는 프레임워크 디바이스 개체에 대한 핸들입니다. 클라이언트 드라이버는 UdecxWdfDeviceAddUsbDeviceEmulation에 대한 이전 호출에서 이 개체를 초기화했습니다.

[in] CapabilityType

요청된 기능을 지정하는 GUID에 대한 포인터입니다. 가능한 PGUID 값은 다음과 같습니다.

  • GUID_USB_CAPABILITY_CHAINED_MDLS
  • 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
기능에 대한 자세한 내용은 USBD_QueryUsbCapability 설명 섹션을 참조하세요.

[in] OutputBufferLength

출력 버퍼를 사용할 수 있는 경우 요청 출력 버퍼의 길이(바이트)입니다.

[out, optional] OutputBuffer

버퍼의 주소를 받는 위치에 대한 포인터입니다. 특정 기능은 이 버퍼의 USB 디바이스 에뮬레이션 클래스 확장(UdeCx)에 추가 정보를 제공해야 할 수 있습니다.

[out] ResultLength

반환 시 콜백 함수가 OutputBuffer에 저장한 정보의 크기(바이트)를 포함하는 위치입니다.

반환 값

작업이 성공하면 콜백 함수는 STATUS_SUCCESS 반환하거나 NT_SUCCESS(상태)이 TRUE인 다른 상태 값을 반환해야 합니다. 기능이 지원되지 않는 경우 클라이언트 드라이버는 STATUS_UNSUCCESSFUL 같은 NT_SUCCESS(상태)가 FALSE와 같으면 반환할 수 있습니다.

설명

클래스 확장은 클래스 확장이 에뮬레이트된 컨트롤러의 기능을 확인하는 요청을 받을 때 클라이언트 드라이버에서 구현한 이 콜백 함수를 호출합니다. 콜백은 일반적으로 EvtDevicePrepareHardware에서 EvtDriverDeviceAdd 가 반환 후에만 호출됩니다. EvtDeviceReleaseHardware가 반환된 후에는 이 콜백을 호출할 수 없습니다.

클래스 확장은 지원되지 않는 대로 이러한 기능 GUID를 보고합니다.

  • GUID_USB_CAPABILITY_STATIC_STREAMS
  • GUID_USB_CAPABILITY_CLEAR_TT_BUFFER_ON_ASYNC_TRANSFER_CANCEL
클래스 확장은 콜백 함수를 호출하지 않고도 지원되는 GUID_USB_CAPABILITY_SELECTIVE_SUSPEND 기능 GUID를 보고합니다.

다른 GUID의 경우 클래스 확장은 클라이언트 드라이버의 구현(예: GUID_USB_CAPABILITY_CHAINED_MDLS)을 호출합니다. 클라이언트 드라이버는 연결된 MDL을 사용하는 I/O 요청에 대한 지원을 결정해야 합니다. 이 기능이 지원되면 URBTransferBufferMdl 멤버에 요청 버퍼가 포함됩니다. 연결된 MDL이 지원되지 않는 경우 클라이언트 드라이버는 연결된 MDL을 가리키는 TransferBufferMdl 값을 받지 않습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10
지원되는 최소 서버 Windows Server 2016
대상 플랫폼 Windows
최소 KMDF 버전 1.15
머리글 udecxwdfdevice.h(Udecx.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

아키텍처: USB 디바이스 에뮬레이션(UDE)

UDE 클라이언트 드라이버 작성