IOCTL_READ_REGISTERS IOCTL(usbscan.h)

제어 파이프를 사용하여 USB 디바이스 레지스터에서 읽습니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

IO_BLOCK 구조체에 대한 포인터입니다.

입력 버퍼 길이

입력 버퍼의 크기입니다.

출력 버퍼

레지스터 콘텐츠를 받을 버퍼에 대한 포인터입니다.

출력 버퍼 길이

출력 버퍼의 크기입니다. 값은 IO_BLOCK 구조체의 uLength 멤버 내용과 일치해야 합니다.

상태 블록

Irp->요청이 성공하면 IoStatus.Status 가 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 NTSTATUS 코드로 적절한 오류 조건에 대한 상태입니다.

설명

DeviceIoControl 매개 변수

IOCTL_READ_REGISTERS I/O 컨트롤 코드를 사용하여 DeviceloControl 함수를 호출하는 경우 호출자는 IO_BLOCK 구조체의 주소를 함수의 lpInBuffer 매개 변수로 지정해야 합니다.

커널 모드 드라이버는 IO_BLOCK 콘텐츠를 사용하여 _URB_CONTROL_VENDOR_OR_CLASS_REQUEST 구조를 포함하는 URB를 만듭니다.

다음 표에서는 _URB_CONTROL_VENDOR_OR_CLASS_REQUEST 구조체 멤버에 할당된 값을 나타냅니다.

Structure Member 할당된 값
TransferFlags 1
TransferBufferLength pIoBlock-uLength>
TransferBuffer DeviceIoControllpOutBuffer 인수입니다.
TransferBufferMDL NULL
RequestTypeReservedBits 0xC0
요청 (pIoBlock->uLength> 1) ? 0x04: 0x0C
(SHORT) pIoBlock-uOffset>
Index pIoBlock-uIndex>

자세한 내용은 스틸 이미지 디바이스용 Kernel-Mode 드라이버 액세스를 참조하세요.

요구 사항

요구 사항
헤더 usbscan.h(Usbscan.h 포함)