비동기적으로 I/O 요청 보내기
I/O 요청을 I/O 대상에 비동기적으로 보내려면 먼저 요청의 형식을 지정해야 합니다. 다음 표에서는 드라이버가 I/O 요청 형식을 지정하기 위해 호출할 수 있는 I/O 대상 개체 메서드를 나열합니다.
메서드 | 용도 |
---|---|
읽기 요청 형식 지정 |
|
쓰기 요청 형식 지정 |
|
디바이스 제어 요청 형식 지정 |
|
내부 디바이스 제어 요청 형식 지정 |
|
비표준 내부 디바이스 제어 요청 형식 지정 |
I/O 요청을 비동기적으로 보내려면 드라이버가 다음을 수행해야 합니다.
요청의 형식을 지정합니다.
이전 표에 나열된 메서드 중 하나를 사용하여 요청의 형식을 지정합니다. 이러한 메서드를 사용하는 방법에 대한 자세한 내용은 메서드의 참조 페이지를 참조하세요.
CompletionRoutine 콜백 함수를 등록합니다.
요청을 비동기적으로 보내는 경우 일반적으로 다른 드라이버가 각 요청을 완료할 때 프레임워크가 드라이버에 알리도록 합니다. 드라이버는 CompletionRoutine 콜백 함수를 정의하고 WdfRequestSetCompletionRoutine을 호출하여 등록해야 합니다. 자세한 내용은 I/O 요청 완료를 참조하세요.
요청을 보냅니다.
드라이버가 요청 형식을 지정하고 CompletionRoutine 콜백 함수를 등록한 후 드라이버는 WdfRequestSend를 호출해야 합니다. 이 메서드를 사용하면 RequestOptions 매개 변수에 설정된 플래그에 따라 요청을 동기적으로 또는 비동기적으로 보낼 수 있습니다. I/O 요청을 동기적으로 보내는 간단한 방법은 동기 적으로 I/O 요청 보내기를 참조하세요. 비동기 요청 또는 WdfRequestSend를 호출하여 전송되는 요청에 대한 완료 상태 가져오는 방법에 대한 자세한 내용은 I/O 요청 완료를 참조하세요.
I/O 요청을 보내기 위해 WdfRequestSend 를 호출하는 드라이버는 나중에 요청을 취소하려고 시도할 수 있습니다. 자세한 내용은 I/O 요청 취소를 참조하세요.
일부 드라이버는 각 요청에 대해 WdfRequestSend 를 두 번 이상 호출하여 단일 I/O 요청을 여러 디바이스로 전송하여 여러 I/O 대상에 보낼 수 있습니다. 이러한 드라이버는 요청이 다음 I/O 대상으로 전송될 수 있는지 확인하기 위해 WdfRequestSend 다음에 WdfRequestSend를 호출하기 전에 WdfRequestChangeTarget을 호출해야 합니다.