Membuat Objek Permintaan Kerangka Kerja

Objek permintaan kerangka kerja mewakili permintaan I/O yang telah dikirim manajer I/O ke driver. Driver berbasis kerangka kerja memproses setiap permintaan I/O dengan memanggil metode objek permintaan kerangka kerja.

Setiap permintaan I/O berisi paket permintaan I/O WDM (struktur IRP ), tetapi driver berbasis kerangka kerja biasanya tidak perlu mengakses struktur IRP.

Sebagian besar objek permintaan kerangka kerja dibuat oleh kerangka kerja, tetapi driver Anda juga dapat membuat objek permintaan.

Objek Permintaan Yang Dibuat oleh Kerangka Kerja

Ketika driver berbasis kerangka kerja menerima paket permintaan I/O (IRP) dari manajer I/O, kerangka kerja akan mencegat IRP dan membuat objek permintaan kerangka kerja. Kerangka kerja menempatkan objek permintaan ke dalam antrean I/O dan, jika driver telah mendaftarkan penangan permintaan untuk antrean, memanggil handler yang sesuai.

Diagram berikut mengilustrasikan langkah-langkah yang terjadi saat kerangka kerja membuat objek permintaan untuk operasi baca.

Diagram yang mengilustrasikan langkah-langkah untuk membuat objek permintaan untuk operasi baca dalam driver berbasis kerangka kerja.

Langkah-langkah berikut sesuai dengan angka dalam diagram sebelumnya:

  1. Aplikasi mode pengguna membaca file dengan memanggil fungsi ReadFile Microsoft Win32.

  2. Fungsi ReadFile memanggil manajer I/O, yang berjalan dalam mode kernel.

  3. Manajer I/O mengalokasikan struktur IRP dan menyimpan kode fungsi IRP_MJ_READ dalam struktur.

  4. Manajer I/O memanggil rutinitas driver standar DispatchRead untuk driver x, meneruskan pointer ke struktur IRP. Karena driver x adalah driver berbasis kerangka kerja, kerangka kerja menyediakan rutinitas DispatchRead driver.

  5. Kerangka kerja membuat objek permintaan yang mewakili struktur IRP. Kerangka kerja menambahkan objek permintaan ke salah satu objek antrean driver.

  6. Kerangka kerja memanggil penangan permintaan EvtIoRead driver, melewati handel objek antrean dan handel objek permintaan.

Objek Permintaan Dibuat oleh Driver

Driver berbasis kerangka kerja juga dapat membuat objek permintaan. Misalnya, driver dapat membuat objek permintaan jika menerima permintaan baca atau tulis untuk jumlah data yang lebih besar dari yang dapat ditangani oleh target I/O driver pada satu waktu. Dalam situasi seperti itu, driver dapat membagi data menjadi beberapa permintaan yang lebih kecil dan menggunakan objek permintaan tambahan untuk mengirim permintaan yang lebih kecil ini ke satu atau beberapa target I/O.

Untuk membuat objek permintaan, driver Anda harus memanggil WdfRequestCreate diikuti dengan metode objek kerangka kerja yang menginisialisasi permintaan, seperti WdfUsbTargetPipeFormatRequestForRead.

Jika driver menerima RUNP WDM dalam rutinitas pengiriman WDM dan kemudian layanan atau meneruskannya dengan menggunakan kerangka kerja, driver dapat memanggil WdfRequestCreateFromIrp.