Pengantar Objek Driver

Manajer I/O membuat objek driver untuk setiap driver yang telah diinstal dan dimuat. Objek driver didefinisikan menggunakan struktur DRIVER_OBJECT .

Ketika manajer I/O memanggil rutinitas DriverEntry driver, manajer I/O menyediakan alamat objek driver. Objek driver berisi penyimpanan untuk titik masuk ke banyak rutinitas standar driver. Driver bertanggung jawab untuk mengisi titik masuk ini.

Gambar berikut mengilustrasikan objek driver, dengan serangkaian rutinitas standar yang ditentukan sistem yang dapat atau harus dimiliki driver tingkat terendah dan tingkat yang lebih tinggi.

Setiap rutinitas standar dengan tanda bintang di samping namanya menerima paket permintaan I/O (IRP) sebagai input. Masing-masing rutinitas standar ini juga menerima penunjuk ke objek perangkat target untuk permintaan I/O.

diagram illustrating a driver object.

Manajer I/O menentukan jenis objek driver dan menggunakan objek driver untuk mendaftar dan melacak informasi tentang gambar driver yang dimuat. Perhatikan bahwa titik masuk pengiriman (DDDispatchXxx melalui DDDispatchYyy) dalam objek driver sesuai dengan kode fungsi utama (IRP_MJ_XXXX) yang diteruskan di lokasi tumpukan I/O runtime integrasi.

Manajer I/O merutekan setiap IRP terlebih dahulu ke rutinitas pengiriman yang disediakan pengemudi. Rutinitas pengiriman driver tingkat terendah biasanya memanggil rutinitas dukungan I/O (IoStartPacket) untuk mengantre (atau meneruskan) setiap IRP yang memiliki argumen yang valid ke rutinitas StartIo driver. Rutinitas StartIo memulai operasi I/O yang diminta pada perangkat tertentu. Driver tingkat yang lebih tinggi biasanya tidak memiliki rutinitas StartIo , tetapi mereka bisa.