소유권 요청

I/O 관리자가 프레임워크 기반 드라이버에 I/O 요청을 보내면 프레임워크는 요청을 가로채 프레임워크 요청 개체를 만듭니다. 프레임워크만 요청에 액세스하고 개체에 대한 작업을 수행할 수 있으므로 프레임워크는 요청 개체를 "소유"합니다.

프레임워크는 요청 개체를 만든 후 드라이버의 I/O 큐 중 하나에 개체를 배치합니다. 프레임워크는 큐에서 요청을 제거하고 드라이버에 전달할 때까지 요청 개체를 계속 소유합니다.

드라이버는 요청 개체 를 받은 후 요청을 소유합니다. 드라이버는 핸들을 통해 요청 개체에 액세스하고 개체에 대한 작업을 수행할 수 있습니다. 드라이버는 요청 개체를 소유하는 동안 요청을 다시 큐에 추가, 완료, 취소 또는 전달할 수 있으며, 그 후에는 더 이상 요청 개체를 소유하지 않으며 액세스할 수 없습니다.

요청 개체의 소유권이 드라이버와 프레임워크 간에 전달되면 개체 핸들의 값이 변경되지 않습니다. 예를 들어 드라이버가 I/O 큐에서 요청을 수신하고 다른 큐에 다시 큐에 넣은 다음 요청을 다시 수신하는 경우 핸들의 값은 변경되지 않습니다. 마찬가지로 드라이버가 I/O 대상에 요청을 전달하고 나중에 I/O 대상이 요청을 완료했다는 알림을 받으면 드라이버의 알림 콜백 함수는 드라이버가 I/O 대상에 제공한 것과 동일한 핸들 값을 받습니다.