본문 바로가기
Programming/윈도우 드라이버

Request 처리하기

by 유주원 2013. 1. 4.

만약 드라이버가 I/O queue에 대한 순차적 dispatching 혹은 병렬 dispatching을 명시했다면 프레임워크는 queue에 있는 request가 드라이버로 전달될 준비가 되었을 때마다 드라이버가 제공하는 callback 함수를 호출한다.

드라이버는 하나 또는 그 이상의 request를 수신하는 callback 함수를 제공할 수 있다.


 - EvtIoRead

      프레임워크는 queue에 있는 read request가 이용가능할 때 I/O queue의 EvtIoRead callback
      함수를 호출한다.


 - EvtIoWrite

      프레임워크는 queue에 있는 write request가 이용가능할 때 I/O queue의 EvtIoWrite callback
      함수를 호출한다.

 

- EvtIoDeviceControl

      프레임워크는 queue에 있는 device I/O control request가 이용가능할 때 EvtIoDeviceControl
      callback 함수를 호출한다.

 

- EvtIoInternalDeviceControl

      프레임워크는 내부 디바이스 I/O control request가 이용가능할 때 EvtIoInternalDeviceControl
      callback 함수를 호출한다.

 

 - EvtIoDefault

      프레임워크는 request가 이용가능할 때, 관련된 request 타입의 callback 함수를 드라이버에서
      지원하지 않는다면 
EvtIoDefault callback 함수를 호출한다.

 

드라이버는 I/O queue를 생성하기 위해 WdfIoQueueCreate를 호출할 때 callback 함수를 등록한다.

각각의 callback 함수는 두개의 파라미터를 가진다. 하나는 프레임워크가 드라이버에게 전달한 I/O request의 핸들과 I/O queue의 핸들이다. callback 함수는 WdfIoQueueGetDevice를 호출함으로써 target 디바이스를 결정할 수 있다.