Kapan Objek Perangkat WDM Dibuat?

Bagian ini menjelaskan setiap jenis objek perangkat dan menyebutkan kapan masing-masing dibuat.

Gambar berikut menunjukkan kemungkinan jenis objek perangkat yang dapat dilampirkan dalam tumpukan perangkat, mewakili driver yang menangani permintaan I/O untuk perangkat.

diagram yang mengilustrasikan kemungkinan lapisan objek perangkat untuk perangkat.

Mulai dari bagian bawah gambar ini:

  • Pengemudi bus membuat PDO untuk setiap perangkat yang dijumlahkannya di busnya.

    Driver bus membuat PDO untuk perangkat anak saat menghitung perangkat. Pengemudi bus menghitung perangkat sebagai respons terhadap permintaan IRP_MN_QUERY_DEVICE_RELATIONS untuk BusRelations dari manajer PnP. Driver bus membuat PDO untuk perangkat anak jika perangkat telah ditambahkan ke bus sejak terakhir kali pengemudi bus merespons permintaan relasi kueri untuk BusRelations (atau jika ini adalah permintaan relasi kueri pertama sejak mesin di-boot).

    PDO mewakili perangkat ke driver bus, serta komponen sistem mode kernel lainnya seperti manajer daya, manajer PnP, dan manajer I/O.

    Driver lain untuk perangkat melampirkan objek perangkat di atas PDO, tetapi PDO selalu berada di bagian bawah tumpukan perangkat.

  • Driver filter bus opsional membuat filter DO untuk setiap perangkat yang mereka filter.

    Ketika manajer PnP mendeteksi perangkat baru dalam daftar BusRelations , manajer PnP menentukan apakah ada driver filter bus untuk perangkat. Jika demikian, untuk setiap driver tersebut, manajer PnP memastikannya dimuat (memanggil DriverEntry jika perlu) dan memanggil rutinitas AddDevice driver. Jika driver filter bus memfilter operasi untuk perangkat ini, driver filter membuat objek perangkat dan melampirkannya ke tumpukan perangkat dalam rutinitas AddDevice-nya . Jika ada lebih dari satu driver filter bus dan relevan dengan perangkat ini, setiap driver filter tersebut membuat dan melampirkan objek perangkatnya sendiri.

  • Driver filter opsional tingkat bawah membuat DO filter untuk setiap perangkat yang mereka filter.

    Jika ada driver filter opsional tingkat bawah untuk perangkat ini, manajer PnP memastikan bahwa pengemudi tersebut dimuat setelah pengemudi bus dan driver filter bus apa pun. Manajer PnP memanggil rutinitas AddDevice driver filter. Dalam rutinitas AddDevice-nya , driver filter tingkat bawah membuat DO filter untuk perangkat dan melampirkannya ke tumpukan perangkat. Jika ada lebih dari satu driver filter tingkat bawah, setiap driver tersebut akan membuat dan melampirkan DO filternya sendiri.

  • Driver fungsi membuat FDO untuk perangkat.

    Manajer PnP memastikan bahwa driver fungsi untuk perangkat dimuat dan memanggil rutinitas AddDevice driver fungsi. Driver fungsi membuat FDO dan melampirkannya ke tumpukan perangkat.

  • Driver filter opsional tingkat atas membuat DO filter untuk setiap perangkat yang mereka filter.

    Jika ada driver filter opsional tingkat atas untuk perangkat, manajer PnP memastikan driver tersebut dimuat setelah driver fungsi dan memanggil rutinitas AddDevice mereka. Setiap driver filter tersebut melampirkan objek perangkatnya ke tumpukan perangkat.

Singkatnya, tumpukan perangkat berisi objek perangkat untuk setiap driver yang terlibat dalam menangani I/O ke perangkat tertentu. Driver bus induk memiliki PDO, driver fungsi memiliki FDO, dan setiap driver filter opsional memiliki do filter.

Perhatikan bahwa semua perangkat, perangkat adaptor/pengontrol bus, dan perangkat nonbus, memiliki PDO dan FDO di tumpukan perangkat mereka. PDO untuk adaptor/pengontrol bus dibuat oleh pengemudi bus untuk bus induk. Misalnya, jika adaptor SCSI dicolokkan ke bus PCI, driver bus PCI membuat PDO untuk adaptor SCSI.

Jika perangkat digunakan dalam mode mentah, tidak ada fungsi atau driver filter (tidak ada FDO atau filter DO). Hanya ada PDO untuk sopir bus induk dan nol atau lebih DO filter bus.

Lihat Membuat Objek Perangkat untuk informasi tentang rutinitas driver mana yang bertanggung jawab untuk membuat dan melampirkan objek perangkat.

Tumpukan perangkat ditambah beberapa informasi tambahan merupakan devnode untuk perangkat. Manajer PnP menyimpan informasi dalam devnode perangkat seperti apakah perangkat telah dimulai dan driver mana, jika ada, telah mendaftar untuk pemberitahuan perubahan pada perangkat. Perintah debugger kernel !devnode menampilkan informasi tentang devnode.