IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE IOCTL(usbioctl.h)

IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE I/O 요청은 USB 다기능 디바이스(복합 드라이버)의 드라이버를 기본 USB 드라이버 스택에 등록합니다.

이 요청은 Microsoft에서 제공하는 복합 드라이버, Usbccgp.sys 대체하고 USB(유니버설 직렬 버스) 3.0 사양에 따라 함수 일시 중단 및 원격 절전 모드 해제 기능을 구현하는 드라이버에 의해 전송됩니다.

IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE 커널 모드 I/O 제어 요청입니다. 이 요청은 USB 허브 PDO(물리적 디바이스 개체)를 대상으로 합니다. 이 요청은 PASSIVE_LEVEL IRQL(인터럽트 요청 수준)에서 보내야 합니다.

주 코드

IRP_MJ_INTERNAL_DEVICE_CONTROL

입력 버퍼

Parameters.Others.Argument1 은 부모 드라이버에 대한 정보를 포함하는 호출자가 할당하고 초기화된 REGISTER_COMPOSITE_DEVICE< 구조체에 대한 포인터입니다. 구조를 초기화하려면 USBD_BuildRegisterCompositeDevice 루틴을 호출합니다.

ASSOCIATedIrp.SystemBuffer 멤버는 USB 복합 디바이스의 함수에 대한 함수 핸들 배열(형식화된 USBD_FUNCTION_HANDLE)을 보유할 수 있을 만큼 큰 호출자 할당 버퍼를 가리킵니다. 배열의 요소 수는 REGISTER_COMPOSITE_DEVICEFunctionCount 멤버로 표시됩니다. 함수 수를 가져오려면 get-configuration 요청에서 반환된 설명자를 검사합니다.

입력 버퍼 길이

REGISTER_COMPOSITE_DEVICE 구조체의 크기입니다.

출력 버퍼

출력에서 AssociatedIrp.SystemBuffer 멤버가 가리키는 버퍼는 다중 함수 디바이스의 함수에 대한 함수 핸들로 채워집니다.

출력 버퍼 길이

디바이스의 함수에 대한 함수 핸들의 크기입니다.

상태 블록

USB 드라이버 스택은 요청이 성공적으로 완료되면 Irp-IoStatus.Status>를 STATUS_SUCCESS 설정합니다. STATUS_SUCCESS 함수 핸들이 유효하다는 것을 나타냅니다.

오류가 발생할 경우 Irp-IoStatus.Status>에는 적절한 오류 상태 포함됩니다. 예를 들어 복합 드라이버가 요청을 두 번 이상 보내면 상태가 STATUS_INVALID_DEVICE_REQUEST 설정됩니다.

설명

IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE 목적은 복합 드라이버가 USB 드라이버 스택에 등록 요청을 보내는 것입니다. 등록 요청에서 복합 드라이버는 디바이스에서 지원하는 함수 수를 지정합니다. 따라서 함수 수를 결정한 후 IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE 요청을 보내야 합니다. 일반적으로 해당 정보는 복합 드라이버의 시작 디바이스 루틴 IRP_MN_START_DEVICE 검색됩니다. 구성의 인터페이스 수는 함수 수를 나타낼 있지만 항상 그런 것은 아닙니다. 특정 다기능 디바이스는 하나의 함수와 관련된 여러 인터페이스를 노출합니다. 함수 수를 얻으려면 특정 구성과 관련된 다양한 설명자를 검사해야 합니다. 이러한 설명자는 get-descriptor 요청을 통해 가져올 수 있습니다.

등록 요청에 대한 응답으로 USB 드라이버 스택은 디바이스의 함수에 대한 핸들 목록을 제공합니다. 코드 예제는 복합 디바이스를 등록하는 방법을 참조하세요.

복합 드라이버가 등록되면 드라이버는 원격 절전 모드 해제 기능을 구성할 수 있습니다. 복합 드라이버는 함수 핸들을 사용하여 연결된 함수가 다시 시작 신호를 보낼 때 USB 드라이버 스택에서 원격 절전 모드 해제 알림을 받는 요청 IOCTL_INTERNAL_USB_REQUEST_REMOTE_WAKE_NOTIFICATION 보낼 수 있습니다.

USB 드라이버 스택과 복합 드라이버의 연결을 제거하고 등록을 위해 할당된 모든 리소스를 해제하려면 드라이버가 IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE 요청을 보내야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8
머리글 usbioctl.h(Usbioctl.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

복합 디바이스를 등록하는 방법

IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE