Tumpukan driver

Sebagian besar permintaan yang dikirim ke driver perangkat dikemas dalam paket permintaan I/O (IRP). Setiap perangkat diwakili oleh simpul perangkat, dan setiap simpul perangkat memiliki tumpukan perangkat. Untuk informasi selengkapnya, lihat Simpul perangkat dan tumpukan perangkat. Untuk mengirim permintaan baca, tulis, atau kontrol ke perangkat, manajer I/O menemukan simpul perangkat untuk perangkat dan kemudian mengirim IRP ke tumpukan perangkat simpul tersebut. Terkadang lebih dari satu tumpukan perangkat terlibat dalam memproses permintaan I/O. Terlepas dari berapa banyak tumpukan perangkat yang terlibat, urutan keseluruhan driver yang berpartisipasi dalam permintaan I/O disebut tumpukan driver untuk permintaan tersebut. Kami juga menggunakan istilah tumpukan driver untuk merujuk ke set driver berlapis untuk teknologi tertentu.

Permintaan I/O yang diproses oleh beberapa tumpukan perangkat

Dalam beberapa kasus, lebih dari satu tumpukan perangkat terlibat dalam pemrosesan IRP. Diagram berikut mengilustrasikan kasus di mana empat tumpukan perangkat terlibat dalam pemrosesan satu IRP.

diagram empat simpul perangkat, masing-masing dengan tumpukan perangkat.

Berikut adalah bagaimana IRP diproses pada setiap tahap bernomor dalam diagram:

  1. IRP dibuat oleh Disk.sys, yang merupakan driver fungsi di tumpukan perangkat untuk simpul Perangkat Penyimpanan USB Saya. Disk.sys meneruskan IRP ke tumpukan perangkat ke Usbstor.sys.

  2. Perhatikan bahwa Usbstor.sys adalah driver PDO untuk node Perangkat Penyimpanan USB Saya dan driver FDO untuk node USB Mass Storage Device. Pada titik ini, tidak penting untuk memutuskan apakah IRP dimiliki oleh pasangan (PDO, Usbstor.sys) atau pasangan (FDO, Usbstor.sys). IRP dimiliki oleh driver, Usbstor.sys, dan driver memiliki akses ke PDO dan FDO.

  3. Ketika Usbstor.sys telah selesai memproses IRP, IRP akan meneruskan IRP ke Usbhub.sys. Usbhub.sys adalah driver PDO untuk node Usb Mass Storage Device dan driver FDO untuk node USB Root Hub. Tidak penting untuk memutuskan apakah IRP dimiliki oleh pasangan (PDO, Usbhub.sys) atau pasangan (FDO, Usbhub.sys). IRP dimiliki oleh driver, Usbhub.sys, dan driver memiliki akses ke PDO dan FDO.

  4. Setelah Usbhub.sys selesai memproses IRP, IRP akan meneruskan IRP ke pasangan (Usbuhci.sys, Usbport.sys).

    Usbuhci.sys adalah pengemudi miniport, dan Usbport.sys adalah driver port. Pasangan (miniport, port) memainkan peran sebagai driver tunggal. Dalam hal ini, driver miniport dan driver port ditulis oleh Microsoft. Pasangan (Usbuhci.sys, Usbport.sys) adalah driver PDO untuk simpul USB Root Hub, dan pasangan (Usbuhci.sys, Usbport.sys) juga merupakan driver FDO untuk simpul Pengontrol Host USB. Pasangan (Usbuhci.sys, Usbport.sys) melakukan komunikasi aktual dengan perangkat keras pengontrol host, yang pada gilirannya berkomunikasi dengan perangkat penyimpanan USB fisik.

Tumpukan driver untuk permintaan I/O

Pertimbangkan urutan empat driver yang berpartisipasi dalam permintaan I/O yang diilustrasikan dalam diagram sebelumnya. Kita bisa mendapatkan tampilan lain dari urutan dengan berfokus pada driver daripada pada simpul perangkat dan tumpukan perangkat masing-masing. Diagram berikut menunjukkan driver secara berurutan dari atas ke bawah. Perhatikan bahwa Disk.sys dikaitkan dengan satu objek perangkat, tetapi masing-masing dari tiga driver lainnya dikaitkan dengan dua objek perangkat.

diagram tumpukan driver, memperlihatkan driver teratas yang terkait dengan fdo saja, dan tiga driver lainnya yang terkait dengan pdo dan fdo.

Urutan driver yang berpartisipasi dalam permintaan I/O disebut tumpukan driver untuk permintaan I/O. Untuk mengilustrasikan tumpukan driver untuk permintaan I/O, kami menarik driver dari atas ke bawah dalam urutan mereka berpartisipasi dalam permintaan.

Perhatikan bahwa tumpukan driver untuk permintaan I/O sangat berbeda dari tumpukan perangkat untuk simpul perangkat. Perhatikan juga bahwa tumpukan driver untuk permintaan I/O tidak selalu tetap berada di satu cabang pohon perangkat.

Tumpukan driver teknologi

Pertimbangkan tumpukan driver untuk permintaan I/O yang ditunjukkan dalam diagram sebelumnya. Jika kami memberi setiap driver nama yang ramah dan membuat sedikit perubahan pada diagram, kami memiliki diagram blok yang mirip dengan banyak driver yang muncul dalam dokumentasi Windows Driver Kit (WDK).

diagram tumpukan driver yang menunjukkan nama yang ramah untuk driver: driver kelas disk di atas diikuti oleh driver port penyimpanan usb, dan kemudian driver hub usb dan (usb 2 miniport, port usb) driver.

Dalam diagram, tumpukan driver dibagi menjadi tiga bagian. Kita dapat menganggap setiap bagian sebagai milik teknologi tertentu atau komponen atau bagian tertentu dari sistem operasi. Misalnya, kita mungkin mengatakan bahwa bagian pertama di bagian atas tumpukan driver milik Volume Manager, bagian kedua milik komponen penyimpanan sistem operasi, dan bagian ketiga milik bagian USB inti dari sistem operasi.

Pertimbangkan driver di bagian ketiga. Driver ini adalah subset dari serangkaian driver USB inti yang lebih besar yang disediakan Microsoft untuk menangani berbagai jenis permintaan USB dan perangkat keras USB. Diagram berikut menunjukkan seperti apa seluruh diagram blok inti USB.

diagram yang menunjukkan tumpukan driver teknologi untuk kemungkinan blok inti usb .

Diagram blok yang menunjukkan semua driver untuk teknologi tertentu atau komponen atau bagian tertentu dari sistem operasi disebut tumpukan driver teknologi. Biasanya, tumpukan driver teknologi diberi nama seperti USB Core Driver Stack, Storage Stack, Stack Driver 1394, dan Audio Driver Stack.

Catatan Diagram blok inti USB dalam topik ini menunjukkan salah satu dari beberapa cara yang mungkin untuk mengilustrasikan tumpukan driver teknologi untuk USB 1.0 dan 2.0. Untuk diagram resmi tumpukan driver USB 1.0, 2.0, dan 3.0, lihat Arsitektur Usb Driver Stack.

Simpul perangkat dan tumpukan perangkat

Pasangan minidriver dan driver

Konsep untuk semua pengembang driver