다음을 통해 공유


비동기 I/O 지원

I/O 관리자는 I/O 요청의 발신자(일반적으로 사용자 모드 애플리케이션이지만 때로는 다른 드라이버)가 I/O 요청이 완료될 때까지 기다리지 않고 실행을 계속할 수 있도록 비동기 I/O 지원을 제공합니다. 비동기 I/O 지원은 전체 시스템 처리량과 I/O 요청을 만드는 모든 코드의 성능을 모두 향상시킵니다.

비동기 I/O 지원을 사용하면 커널 모드 드라이버가 I/O 관리자에게 전송된 순서와 동일한 순서로 I/O 요청을 반드시 처리할 필요는 없습니다. I/O 관리자 또는 상위 수준 드라이버는 수신될 때 I/O 요청의 순서를 변경할 수 있습니다. 드라이버는 큰 데이터 전송 요청을 더 작은 전송 요청으로 분할할 수 있습니다. 또한 드라이버는 다중 프로세서 안전에서 설명한 대로 특히 대칭 다중 프로세서 플랫폼에서 I/O 요청 처리를 겹칠 수 있습니다.

또한 커널 모드 드라이버의 개별 I/O 요청 처리가 반드시 직렬화되지는 않습니다. 즉, 드라이버가 다음 들어오는 I/O 요청 처리를 시작하기 전에 완료할 각 IRP를 반드시 처리하지는 않습니다.

드라이버가 IRP를 받으면 가능한 한 많은 IRP 관련 처리를 수행하여 응답합니다. 드라이버가 비동기 IRP 처리를 지원하는 경우 필요한 경우 다음 드라이버에 IRP를 보내고 첫 번째 IRP가 완료될 때까지 기다리지 않고 다음 IRP 처리를 시작할 수 있습니다. 드라이버는 다른 드라이버가 IRP 처리를 완료할 때 I/O 관리자가 호출하는 "완료 루틴"을 등록할 수 있습니다. 드라이버는 IRP의 I/O 상태 블록에 상태 값을 제공하며, 다른 드라이버는 I/O 요청의 상태 확인하기 위해 액세스할 수 있습니다.

드라이버는 디바이스 확장이라고 하는 디바이스 개체의 특수 부분에서 현재 I/O 작업에 대한 상태 정보를 유지할 수 있습니다.

자세한 내용은 IRP입력/출력 기술 처리를 참조하세요.