Bagikan melalui


Menggunakan Driver Bus Multifungsi System-Supplied

Jika bus yang mendasar perangkat mendukung standar bus multifungsi, seperti Kartu PC, vendor untuk perangkat multifungsi pada platform berbasis NT dapat menggunakan driver bus multifungsi yang disediakan sistem (mf.sys) untuk mendukung perangkat.

Driver bus mf.sys menangani enumerasi PnP dari fungsi perangkat dan sumber daya arbitrase, seperti port I/O dan IRQ, di antara fungsi. Driver mf.sys menangani manajemen daya untuk fungsi anak dengan daya mengelola perangkat multifungsi induk.

Untuk menggunakan mf.sys, perangkat multifungsi harus memenuhi persyaratan berikut:

  • Bus yang mendasar perangkat harus memiliki standar multifungsi.

  • DEVICE_CAPABILITIES fungsi anak harus identik dan harus cocok dengan fungsi induk. Saat dikueri untuk kemampuan perangkat fungsi anak (IRP_MN_QUERY_CAPABILITIES), driver mf.sys melaporkan kemampuan perangkat perangkat induk.

  • Pengemudi untuk bus tempat perangkat multifungsi berada, seperti pcmcia.sys, harus menangani permintaan IRP_MN_READ_CONFIG dan IRP_MN_WRITE_CONFIG apa pun. Pengemudi mf.sys hanya meneruskan IRP ini ke sopir bus induk.

  • Fungsi harus independen: fungsi tidak dapat memiliki dependensi urutan awal; persyaratan sumber daya untuk satu fungsi tidak dapat diekspresikan dalam hal sumber daya fungsi lain (misalnya, function1 menggunakan port I/O X dan function2 menggunakan portX + 200); dan setiap fungsi harus dapat beroperasi sebagai perangkat terpisah, bahkan jika dilayankan oleh driver yang sama dengan fungsi lain.

Untuk menggunakan mf.sys, vendor memasok INF untuk perangkat multifungsi yang menentukan mf.sys sebagai driver untuk perangkat. Jika perangkat sepenuhnya dan akurat sesuai dengan standar multifungsi untuk bus yang mendasarnya, vendor perangkat tersebut dapat menggunakan mf.inf yang disediakan sistem. Jika perangkat tidak sepenuhnya sesuai dengan standar, vendor harus menyediakan INF kustom.

Dalam kedua kasus, vendor juga memasok driver dan file INF untuk fungsi individual pada perangkat.

Kerangka INF multifungsi kustom berikut mengilustrasikan sintaks yang diperlukan untuk menentukan mf.sys sebagai driver untuk perangkat multifungsi:

[Version]
; ...
Class = Multifunction   ; the system-defined class for MF devices
ClassGUID  = {4d36e971-e325-11ce-bfc1-08002be10318} ; GUID for MF
; ...
; ...
[ControlFlags]
ExcludeFromSelect = *   ; don't include PnP devices in a displayed list of
                        ; devices available for manual installation
[Manufacturer]
; ...
; ...
[ModelsSection.NTamd64]         ; models section
; ...
; ...
[DDInstall.NT]          ; install section
Include = mf.inf        ; specify that this device requires mf.sys
Needs = MFINSTALL.mf
; ...

[DDinstall.NT.Services]
Include = mf.inf
Needs = MFINSTALL.mf.Services

[DDInstall.NT.HW]
AddReg=DDInstall.RegHW

[DDInstall.RegHW]
; put entries with child function hardware IDs here
; ...

; put override sections here...
; ...

[Strings]
; ...

Pertimbangkan kombinasi perangkat KARTU PC LAN/modem. Tanpa dukungan multifungsi khusus, perangkat tersebut mungkin dilaporkan oleh driver bus PCMCIA sebagai perangkat modem tunggal. Dengan dukungan tambahan INF multifungsi dan driver bus mf.sys, kedua fungsi perangkat dijumlahkan. Gambar berikut menunjukkan tumpukan perangkat sampel yang mungkin dibuat untuk Kartu PC kombo tersebut dengan dukungan multifungsi yang diperlukan.

diagram yang mengilustrasikan tumpukan perangkat untuk perangkat multifungsi yang dijumlahkan oleh mf.sys.

Seperti yang ditunjukkan pada gambar sebelumnya, pengemudi untuk bus tempat perangkat multifungsi berada menghitung satu perangkat. ID perangkat keras dalam file INF multifungsi menyebabkan manajer PnP memuat driver bus mf.sys sebagai driver fungsi untuk perangkat. Driver bus mf.sys menghitung dua perangkat anak, perangkat LAN, dan modem.

Manajer PnP memperlakukan setiap perangkat anak seperti perangkat biasa, menemukan file INF, memuat driver yang sesuai, memanggil rutinitas AddDevice mereka, dan sebagainya sampai tumpukan perangkat dibuat untuk setiap perangkat. Driver bus mf.sys membuat arbitrase sumber daya untuk perangkat anak dan mengelola aspek multifungsi perangkat lainnya. Vendor kartu multifungsi menyediakan driver fungsi dan INF untuk beberapa fungsi (LAN dan modem), seolah-olah mereka adalah perangkat terpisah.

Ilustrasi ini berfokus pada driver fungsi dan driver bus induk serta FDO dan PDO terkait. Setiap driver filter (dan filter DO) dihilangkan untuk kesederhanaan.