다음을 통해 공유


비동기적으로 I/O 요청 보내기

I/O 요청을 I/O 대상에 비동기적으로 보내려면 먼저 요청의 형식을 지정해야 합니다. 다음 표에서는 드라이버가 I/O 요청 형식을 지정하기 위해 호출할 수 있는 I/O 대상 개체 메서드를 나열합니다.

메서드 용도

WdfIoTargetFormatRequestForRead

읽기 요청 형식 지정

WdfIoTargetFormatRequestForWrite

쓰기 요청 형식 지정

WdfIoTargetFormatRequestForIoctl

디바이스 제어 요청 형식 지정

WdfIoTargetFormatRequestForInternalIoctl

내부 디바이스 제어 요청 형식 지정

WdfIoTargetFormatRequestForInternalIoctlOthers

비표준 내부 디바이스 제어 요청 형식 지정

I/O 요청을 비동기적으로 보내려면 드라이버가 다음을 수행해야 합니다.

  1. 요청의 형식을 지정합니다.

    이전 표에 나열된 메서드 중 하나를 사용하여 요청의 형식을 지정합니다. 이러한 메서드를 사용하는 방법에 대한 자세한 내용은 메서드의 참조 페이지를 참조하세요.

  2. CompletionRoutine 콜백 함수를 등록합니다.

    요청을 비동기적으로 보내는 경우 일반적으로 다른 드라이버가 각 요청을 완료할 때 프레임워크가 드라이버에 알리도록 합니다. 드라이버는 CompletionRoutine 콜백 함수를 정의하고 WdfRequestSetCompletionRoutine을 호출하여 등록해야 합니다. 자세한 내용은 I/O 요청 완료를 참조하세요.

  3. 요청을 보냅니다.

    드라이버가 요청 형식을 지정하고 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을 호출해야 합니다.