裝置介面類別概觀
使用者模式程式代碼可以導向 I/O 要求之實體、邏輯或虛擬設備的任何驅動程式,都必須為其使用者模式用戶端提供名稱。 使用名稱,使用者模式應用程式 (或其他系統元件) 識別其要求 I/O 的裝置。
在 Windows NT 4.0 和舊版的 NT 型作業系統中,名為其裝置對象的驅動程式,然後在這些名稱與用戶可見的 Win32 邏輯名稱之間的登錄中設定符號連結。
從 Windows 2000 開始,驅動程式不會命名裝置物件。 相反地,他們會使用依裝置介面類別分組的裝置介面。 裝置介面類別是將裝置和驅動程式功能匯出至其他系統元件的方式,包括其他驅動程式,以及使用者模式應用程式。 驅動程式可以針對使用者模式 I/O 要求傳送的每個裝置對象,註冊並啟用裝置介面類別的裝置介面實例。 每個 裝置介面類別 都應該代表該類別中任何 裝置介面 應該支援或表示的特定 I/O 合約的概念性功能。
每個裝置介面類別都與 GUID 相關聯。 系統會定義裝置特定標頭檔中常見裝置介面類別的 GUID。 廠商可以建立其他裝置介面類別。
例如,三種不同類型的滑鼠裝置可以註冊屬於相同裝置介面類別成員的 裝置介面 ,即使其中一個裝置介面是透過USB埠,第二種是透過序列埠,第三種是透過基礎結構埠。 每個驅動程式都會將其裝置註冊為介面類別的成員GUID_DEVINTERFACE_MOUSE。 此 GUID 定義於頭檔 Ntddmou.h 中。
驅動程式可以註冊 並啟用裝置 介面,其可控制裝置和驅動程式支援的裝置 介面類別 數目。 例如,可掛接之磁碟的驅動程式應該同時註冊其磁碟介面類別 (GUID_DEVINTERFACE_DISK) ,以及可掛接的裝置類別 (MOUNTDEV_MOUNTED_DEVICE_GUID) 。
當驅動程式註冊裝置介面類別的裝置介面實例時,I/O 管理員會將裝置和裝置介面類別 GUID 與符號連結名稱產生關聯。 驅動程式必須啟用裝置介面,讓驅動程式或應用程式能夠使用該符號連結來傳送 I/O。 連結名稱的註冊會在系統啟動時持續存在,但 裝置介面必須由驅動程式在裝置 的每個列舉上啟用。 使用特定 裝置介面類別 的應用程式可以查詢該類別中 裝置介面 的實例,並接收代表支援介面之裝置的符號連結名稱清單。 然後,應用程式可以使用符號連結名稱作為 I/O 要求的目標。
請勿將裝置介面與驅動程式可以導出的介面混淆,以回應 IRP_MN_QUERY_INTERFACE 要求。 該 IRP 可用來傳遞核心模式驅動程式之間的例行進入點。