Bagikan melalui


Kode Fungsi Utama IRP

Setiap lokasi tumpukan I/O khusus driver (IO_STACK_LOCATION) untuk setiap IRP berisi kode fungsi utama (IRP_MJ_XXX), yang memberi tahu driver operasi apa yang harus dilakukannya atau driver perangkat yang mendasar untuk memenuhi permintaan I/O. Setiap driver mode kernel harus menyediakan rutinitas pengiriman untuk kode fungsi utama yang harus didukungnya.

Operasi spesifik yang dilakukan driver untuk kode IRP_MJ_XXX tertentu agak tergantung pada perangkat yang mendasarinya, terutama untuk permintaan IRP_MJ_DEVICE_CONTROL dan IRP_MJ_INTERNAL_DEVICE_CONTROL . Misalnya, permintaan yang dikirim ke driver keyboard harus agak berbeda dari yang dikirim ke driver disk. Namun, manajer I/O menentukan parameter dan konten lokasi tumpukan I/O untuk setiap kode fungsi utama yang ditentukan sistem.

Setiap driver tingkat yang lebih tinggi harus menyiapkan lokasi tumpukan I/O yang sesuai di IRP untuk driver tingkat bawah berikutnya dan memanggil IoCallDriver, baik dengan setiap IRP input, atau dengan IRP yang dibuat driver (jika driver tingkat yang lebih tinggi berpegang pada IRP input). Akibatnya, setiap driver perantara harus menyediakan rutinitas pengiriman untuk setiap kode fungsi utama yang ditangani driver perangkat yang mendasar. Jika tidak, driver perantara baru akan "memutus rantai" setiap kali aplikasi atau driver tingkat yang masih lebih tinggi mencoba mengirim permintaan I/O ke driver perangkat yang mendasar.

Driver sistem file dan driver filter sistem file warisan juga menangani subset kode fungsi IRP_MJ_XXXX yang ditentukan sistem yang diperlukan, beberapa dengan kode fungsi IRP_MN_XXX bawahan. Untuk informasi selengkapnya tentang cara menangani RUNP ini, lihat kode fungsi utama IRP untuk driver sistem file dan driver filter FS warisan.

Driver menangani runtime integrasi yang diatur dengan beberapa atau semua kode fungsi utama berikut:

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_FILE_SYSTEM_CONTROL

IRP_MJ_FLUSH_BUFFERS

IRP_MJ_INTERNAL_DEVICE_CONTROL

IRP_MJ_PNP

IRP_MJ_POWER

IRP_MJ_QUERY_INFORMATION

IRP_MJ_READ

IRP_MJ_SET_INFORMATION

IRP_MJ_SHUTDOWN

IRP_MJ_SYSTEM_CONTROL

IRP_MJ_WRITE

Parameter input dan output yang dijelaskan di bagian ini adalah parameter khusus fungsi dalam IRP.

Untuk informasi selengkapnya tentang IRP, lihat Menangani IRP.