使用System-Supplied多功能匯流排驅動程式
如果裝置的基礎匯流排支援多功能匯流排標準,例如電腦卡,NT 型平臺上多功能裝置的廠商可以使用系統提供的多函式匯流排驅動程式 (mf.sys) 來支援裝置。
mf.sys匯流排驅動程式會處理裝置函式的 PnP 列舉,並在函式之間仲裁資源,例如 I/O 埠和 IRQ。 mf.sys驅動程式會藉由電源管理父多重功能裝置來處理子函式的電源管理。
若要使用mf.sys,多功能裝置必須符合下列需求:
裝置的基礎匯流排必須具有多功能標準。
子函式 DEVICE_CAPABILITIES 必須相同,且必須符合父裝置的函式。 查詢子函式 (IRP_MN_QUERY_CAPABILITIES) 的裝置功能時,mf.sys驅動程式會報告父裝置的裝置功能。
多功能裝置所在的匯流排驅動程式,例如pcmcia.sys,必須處理任何 IRP_MN_READ_CONFIG 和 IRP_MN_WRITE_CONFIG 要求。 mf.sys驅動程式只會將這些 IRP 傳遞給父匯流排驅動程式。
函式必須獨立:它們不能有開始順序相依性;例如,function1 使用 I/O 埠 X,而 function2 使用 portX + 200) ,無法以另一個函式的資源 (來表示某個函式的資源需求;而且每個函式都必須能夠以個別裝置的形式運作,即使驅動程式是由相同的驅動程式 () 作為另一個函式提供服務也一樣。
若要使用mf.sys,廠商會為多功能裝置提供 INF,指定mf.sys做為裝置的驅動程式。 如果裝置完全且正確符合其基礎匯流排的多功能標準,這類裝置的廠商可以使用系統提供的 mf.inf。 如果裝置不符合標準,廠商必須提供自訂 INF。
不論是哪一種情況,廠商也會為裝置上的個別功能提供驅動程式和 INF 檔案。
自訂多功能 INF 的下列基本架構說明將mf.sys指定為多功能裝置驅動程式的必要語法:
[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]
; ...
請考慮組合 LAN/數據機電腦卡裝置。 如果沒有任何特殊的多功能支援,PCMCIA 匯流排驅動程式可能會將這類裝置回報為單一數據機裝置。 透過多重功能 INF 和mf.sys匯流排驅動程式的額外支援,會列舉裝置的兩個功能。 下圖顯示可能為這類組合電腦卡建立且具有所需多功能支援的範例裝置堆疊。
如上圖所示,多功能裝置所在的匯流排驅動程式會列舉一個裝置。 多功能 INF 檔案中的硬體識別碼會導致 PnP 管理員將mf.sys匯流排驅動程式載入為裝置的函式驅動程式。 mf.sys匯流排驅動程式會列舉兩個子裝置:LAN 裝置和數據機。
PnP 管理員會將每個子裝置視為一般裝置、尋找 INF 檔案、載入適當的驅動程式、呼叫其 AddDevice 常式等等,直到為每個裝置建立裝置堆疊為止。 mf.sys匯流排驅動程式會仲裁子裝置的資源,並管理裝置的任何其他多功能層面。 多函式卡片的廠商提供多個函式的函式驅動程式和 INF, (LAN 和數據機) ,就像它們是個別的裝置一樣。
此圖著重于函式驅動程式和父匯流排驅動程式及其相關聯的 FDO 和 PDO。 為了簡單起見,會省略任何篩選驅動程式 (和篩選 DOS) 。