任何實體、邏輯或虛擬裝置的驅動程式,若使用者模式程式碼可將 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 用於在核心模式驅動程式間傳遞常式入口點。