Bagikan melalui


Kode fungsi utama IRP

Each driver-specific I/O stack location (IO_STACK_LOCATION) for every IRP contains a major function code (IRP_MJ_XXX), which tells the driver what operation it or the underlying device driver should carry out to satisfy the I/O request. Setiap driver mode kernel harus menyediakan rutinitas pengiriman untuk kode fungsi utama yang harus didukungnya.

The specific operations a driver carries out for a given IRP_MJ_XXX code depend somewhat on the underlying device, particularly for IRP_MJ_DEVICE_CONTROL and IRP_MJ_INTERNAL_DEVICE_CONTROL requests. Misalnya, permintaan yang dikirim ke driver keyboard tentu 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.

Every higher-level driver must set up the appropriate I/O stack location in IRPs for the next-lower-level driver and call IoCallDriver, either with each input IRP, or with a driver-created IRP (if the higher-level driver holds on to the input IRP). 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.

File system drivers and legacy file system filter drivers also handle a required subset of system-defined IRP_MJ_XXX function codes, some with subordinate IRP_MN_XXX function codes. Untuk informasi selengkapnya tentang cara menangani IRP ini, lihat Kode fungsi utama IRP untuk driver sistem file dan driver filter FS warisan.

Driver menangani IRP 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.

For more information about IRPs, see Handling IRPs.