Mengirim Permintaan I/O Secara Asinkron

Sebelum Anda dapat mengirim permintaan I/O secara asinkron ke target I/O, Anda harus memformat permintaan. Tabel berikut mencantumkan metode objek target I/O yang dapat dipanggil driver Anda untuk memformat permintaan I/O.

Metode Tujuan

WdfIoTargetFormatRequestForRead

Memformat permintaan baca

WdfIoTargetFormatRequestForWrite

Memformat permintaan tulis

WdfIoTargetFormatRequestForIoctl

Memformat permintaan kontrol perangkat

WdfIoTargetFormatRequestForInternalIoctl

Memformat permintaan kontrol perangkat internal

WdfIoTargetFormatRequestForInternalIoctlOthers

Memformat permintaan kontrol perangkat internal non-standar

Untuk mengirim permintaan I/O secara asinkron, driver Anda harus:

  1. Format permintaan.

    Gunakan salah satu metode yang tercantum dalam tabel sebelumnya untuk memformat permintaan Anda. Untuk informasi mendetail tentang cara menggunakan metode ini, lihat halaman referensi metode.

  2. Daftarkan fungsi panggilan balik CompletionRoutine .

    Jika Anda mengirim permintaan secara asinkron, Anda biasanya ingin kerangka kerja memberi tahu driver Anda ketika driver lain menyelesaikan setiap permintaan. Driver Anda harus menentukan fungsi panggilan balik CompletionRoutine dan mendaftarkannya dengan memanggil WdfRequestSetCompletionRoutine. Untuk informasi selengkapnya, lihat Menyelesaikan Permintaan I/O.

  3. Kirim permintaan.

    Setelah driver Memformat permintaan dan mendaftarkan fungsi panggilan balik CompletionRoutine , driver Anda harus memanggil WdfRequestSend. Metode ini memungkinkan Anda mengirim permintaan baik secara sinkron atau asinkron, tergantung pada bendera yang diatur dalam parameter RequestOptions . Untuk cara yang lebih sederhana untuk mengirim permintaan I/O secara sinkron, lihat Mengirim Permintaan I/O Secara sinkron. Untuk informasi tentang cara mendapatkan status penyelesaian untuk permintaan asinkron atau untuk permintaan apa pun yang dikirim dengan memanggil WdfRequestSend, lihat Menyelesaikan Permintaan I/O.

Driver yang memanggil WdfRequestSend untuk mengirim permintaan I/O dapat mencoba membatalkan permintaan nanti. Untuk informasi selengkapnya, lihat Membatalkan Permintaan I/O.

Beberapa driver mungkin mengirim satu permintaan I/O ke beberapa perangkat, dan dengan demikian ke beberapa target I/O, dengan memanggil WdfRequestSend lebih dari sekali untuk setiap permintaan. Driver ini harus memanggil WdfRequestChangeTarget sebelum setiap panggilan ke WdfRequestSend setelah yang pertama untuk memverifikasi bahwa permintaan dapat dikirim ke target I/O berikutnya.