Contoh Tumpukan Perangkat WDM

Bagian ini menjelaskan objek perangkat yang dibuat oleh sekumpulan driver yang mungkin untuk perangkat keras USB untuk mengilustrasikan objek perangkat WDM dan bagaimana mereka berlapis.

Gambar berikut menunjukkan objek perangkat yang dibuat oleh driver sampel yang dijelaskan dalam Lapisan Driver WDM: Contoh.

diagram yang mengilustrasikan sampel lapisan objek perangkat wdm untuk joystick usb.

Mulai dari bagian bawah gambar ini, objek perangkat dalam tumpukan perangkat sampel meliputi:

  1. PDO dan FDO untuk bus PCI.

    Driver bus akar menghitung bus sistem internal (bus akar) dan membuat PDO untuk setiap perangkat yang ditemukannya. Salah satu PDO ini adalah untuk bus PCI. (PDO dan FDO untuk bus akar tidak ditunjukkan pada gambar.)

    Manajer PnP mengidentifikasi driver PCI sebagai driver fungsi untuk bus PCI, memuat driver (jika belum dimuat), dan meneruskan PDO ke driver PCI. Dalam rutinitas AddDevice-nya , driver PCI membuat FDO untuk bus PCI (IoCreateDevice) dan melampirkan FDO ke tumpukan perangkat (IoAttachDeviceToDeviceStack) untuk bus PCI. Driver PCI membuat dan melampirkan FDO ini sebagai bagian dari tanggung jawabnya sebagai driver fungsi untuk bus PCI.

    Tidak ada driver filter untuk bus PCI dalam contoh ini.

  2. PDO dan FDO untuk pengontrol host USB.

    Manajer PnP mengarahkan driver PCI untuk memulai perangkatnya (IRP_MN_START_DEVICE) dan kemudian meminta driver PCI untuk anak-anaknya (IRP_MN_QUERY_DEVICE_RELATIONS dengan jenis relasi BusRelations). Sebagai tanggapan, driver PCI menghitung perangkat di busnya. Dalam contoh ini, driver PCI menemukan pengontrol host USB dan membuat PDO untuk perangkat tersebut. Panah lebar pada gambar menunjukkan bahwa pengontrol host USB adalah "anak" dari bus PCI. Driver PCI membuat PDO untuk perangkat anaknya sebagai bagian dari tanggung jawabnya sebagai pengemudi bus untuk bus PCI.

    Manajer PnP mengidentifikasi pasangan driver miniclass/class pengontrol host USB sebagai driver fungsi untuk pengontrol host USB dan memuat pasangan driver. Manajer PnP memanggil pasangan driver pada waktu yang tepat untuk membuat dan melampirkan FDO untuk pengontrol host USB.

    Tidak ada driver filter untuk pengontrol host USB dalam contoh ini.

  3. PDO dan FDO untuk hub USB.

    Pengontrol host USB menghitung busnya, menemukan hub USB di satu-satu port, dan membuat PDO untuk hub. Driver hub USB membuat dan melampirkan FDO untuk hub.

    Tidak ada driver filter untuk hub USB dalam contoh ini.

  4. PDO, FDO, dan dua DO filter untuk perangkat joystick.

    Driver hub USB menghitung busnya, menemukan perangkat HID (joystick), dan membuat PDO untuk joystick.

    Dalam contoh ini, driver filter tingkat bawah telah disiapkan di registri untuk perangkat joystick, sehingga manajer PnP memuat driver filter. Driver filter menentukan bahwa itu relevan dengan perangkat dan membuat dan melampirkan filter DO ke tumpukan perangkat.

    Manajer PnP menentukan bahwa driver fungsi untuk perangkat joystick adalah pasangan driver kelas HID/miniclass dan memuat driver tersebut. Pasangan driver terdiri dari driver miniclass yang ditautkan ke DLL driver kelas; bersama-sama mereka bertindak sebagai satu driver fungsi untuk perangkat. Pasangan driver kelas/miniclass membuat satu objek perangkat, FDO, dan melampirkannya ke tumpukan perangkat.

    Driver filter tingkat atas membuat dan melampirkan FILTER DO ke tumpukan perangkat, dengan cara yang mirip dengan filter tingkat bawah.

Perhatikan bahwa PDO yang dibuat oleh driver bus induk selalu berada di bagian bawah tumpukan perangkat untuk perangkat tertentu. Ketika driver menangani PnP atau runtime integrasi daya, mereka harus melewati setiap IRP hingga ke tumpukan perangkat ke PDO dan driver bus terkait.

Gambar berikut menunjukkan tumpukan perangkat yang sama dengan gambar sebelumnya, tetapi menekankan objek perangkat mana yang dibuat dan dikelola oleh driver mana.

diagram yang mengilustrasikan lapisan objek perangkat sampel dari perspektif driver.

Sopir bus mencakup lebih dari satu tumpukan perangkat. Pengemudi bus membuat FDO untuk adaptor/pengontrol busnya dan membuat PDO untuk setiap perangkat anaknya.