Gunakan kembali IRP

Dalam keadaan tertentu, driver dapat menggunakan kembali RUNPS. Driver dapat mengalokasikan kumpulan buffer memori yang digunakannya untuk menahan RUNPS karena perlu dibuat.

Driver tidak boleh mencoba menggunakan kembali IRP yang dikeluarkan oleh manajer I/O. Secara khusus, driver tidak boleh mencoba menggunakan kembali IRP yang dibuat oleh rutinitas IoMakeAssociatedIrp, IoBuildSynchronousFsdRequest, IoBuildAsynchronousFsdRequest, atau IoBuildDeviceIoControlRequest .

Driver dapat menggunakan kembali runtime integrasi yang telah dibuat dengan aman, sebagai berikut:

  1. Jika driver mengalokasikan IRP sebagai memori mentah (misalnya, dengan memanggil ExAllocatePoolWithTag), dan kemudian menginisialisasinya dengan IoInitializeIrp, maka dapat dengan aman memanggil IoInitializeIrp atau IoReuseIrp untuk menginisialisasi ulang buffer memori.

  2. Pada Sistem operasi Microsoft Windows 2000 dan yang lebih baru, driver yang membuat IRP dengan IoAllocateIrp dapat menggunakan kembali IRP dengan memanggil IoReuseIrp.

  3. Jika driver mengalokasikan IRP dengan memanggil IoAllocateIrp dengan parameter ChargeQuota diatur ke FALSE, maka dapat dengan aman menggunakan IoInitializeIrp untuk menginisialisasi ulang IRP. Driver yang harus bekerja pada Windows 98/Me dapat menggunakan metode ini sebagai solusi. Driver yang dirancang ketat untuk Windows 2000 dan sistem operasi yang lebih baru harus menggunakan metode sebelumnya.