EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL 콜백 함수(wdfio.h)
[KMDF 및 UMDF에 적용]
드라이버의 EvtIoDeviceControl 이벤트 콜백 함수는 지정된 디바이스 I/O 제어 요청을 처리합니다.
구문
EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL EvtWdfIoQueueIoDeviceControl;
void EvtWdfIoQueueIoDeviceControl(
[in] WDFQUEUE Queue,
[in] WDFREQUEST Request,
[in] size_t OutputBufferLength,
[in] size_t InputBufferLength,
[in] ULONG IoControlCode
)
{...}
매개 변수
[in] Queue
I/O 요청과 연결된 프레임워크 큐 개체에 대한 핸들입니다.
[in] Request
프레임워크 요청 개체에 대한 핸들입니다.
[in] OutputBufferLength
출력 버퍼를 사용할 수 있는 경우 요청 출력 버퍼의 길이(바이트)입니다.
[in] InputBufferLength
입력 버퍼를 사용할 수 있는 경우 요청의 입력 버퍼 길이(바이트)입니다.
[in] IoControlCode
요청과 연결된 드라이버 정의 또는 IOCTL(시스템 정의 I/O 제어 코드)입니다.
반환 값
없음
설명
드라이버는 WdfIoQueueCreate를 호출할 때 EvtIoDeviceControl 콜백 함수를 등록합니다. WdfIoQueueCreate 호출에 대한 자세한 내용은 I/O 큐 만들기를 참조하세요.
드라이버가 디바이스의 I/O 큐에 대한 EvtIoDeviceControl 콜백 함수를 등록한 경우 콜백 함수는 큐에서 모든 I/O 제어 요청(IRP_MJ_DEVICE_CONTROL)을 수신합니다. 자세한 내용은 요청 처리기를 참조하세요.
EvtIoDeviceControl 콜백 함수는 수신된 각 I/O 요청을 어떤 방식으로 처리해야 합니다. 자세한 내용은 I/O 요청 처리를 참조하세요.
드라이버는 사용자 애플리케이션이 DeviceIoControl을 호출하거나(Microsoft Windows SDK 설명서에 설명됨) WdfIoTargetSendIoctlSynchronously 또는 WdfIoTargetFormatRequestForIoctl을 호출하여 요청을 만들 때 I/O 제어 요청을 받습니다.
수행할 작업 유형은 IoControlCode 매개 변수의 값에 따라 달라집니다. 애플리케이션 및 기타 드라이버가 드라이버에 보낼 수 있는 IoControlCode 값 집합을 결정해야 합니다. IOCTL에 대한 자세한 내용은 I/O 제어 코드 사용을 참조하세요.
대부분의 디바이스 I/O 컨트롤 작업에는 입력 버퍼, 출력 버퍼 또는 둘 다 필요합니다. 드라이버가 요청의 버퍼에 액세스하는 방법에 대한 자세한 내용은 Framework-Based 드라이버에서 데이터 버퍼 액세스를 참조하세요.
드라이버가 요청의 입력 및 출력 버퍼(있는 경우)에 액세스하는 데 사용할 수 있는 기술은 IOCTL의 TransferType 필드에 따라 달라집니다. IOCTL의 TransferType 필드 값은 METHOD_BUFFERED, METHOD_DIRECT_IN, METHOD_DIRECT_OUT 또는 METHOD_NEITHER 수 있습니다. TransferType 필드에 대한 자세한 내용은 I/O 제어 코드 정의를 참조하세요.
디바이스 또는 드라이버의 WDF_OBJECT_ATTRIBUTES 구조체의 ExecutionLevel 멤버가 WdfExecutionLevelPassive로 설정되지 않는 한 EvtIoDeviceControl 콜백 함수는 IRQL <= DISPATCH_LEVEL 호출할 수 있습니다.
IRQL이 PASSIVE_LEVEL 경우 프레임워크는 중요한 지역 내에서 콜백 함수를 호출합니다.
요청 처리기의 IRQL 수준에 대한 자세한 내용은 자동 동기화 사용을 참조하세요.
드라이버의 EvtIoDeviceControl 콜백 함수는 다음 큐 개체 메서드를 호출하면 안 됩니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | wdfio.h(Wdf.h 포함) |
IRQL | <= DISPATCH_LEVEL(주의 섹션 참조) |