裝置介面同時適用於核心模式元件與使用者模式應用程式。 使用者模式程式碼可使用 CfgMgr32 函式 (例如 CM_Get_Device_Interface_List)或 SetupDiXxx 函數(參見 SetupDi 裝置介面函數)來查詢已註冊且啟用的裝置介面。 使用者模式應用程式接著可以使用 I/O API,如 CreateFile ,取得裝置的 handle 以便傳送 I/O。 欲獲得裝置介面啟用與停用的通知,以及如何回應這些操作,請參閱 「註冊」以獲取裝置介面到達及移除通知。
在核心模式元件使用特定裝置或檔案物件之前,必須執行下列操作:
判斷所需的裝置介面類別是否已註冊並啟用。
驅動程式可以向 PnP 管理器註冊,以便在裝置介面實例啟用或停用時收到通知。 要註冊,元件呼叫 IoRegisterPlugPlayNotification。 此例程會儲存驅動程式提供的回呼位址;每當裝置介面的某個執行個體啟用或停用時,便會針對指定的裝置類別呼叫此回呼。 回調例程會接收 DEVICE_INTERFACE_CHANGE_NOTIFICATION 結構,其中包含一個代表介面實例符號連結的 Unicode 字串。 詳情請參閱 使用 PnP 裝置介面變更通知 。
驅動程式或其他核心模式元件也可以呼叫 IoGetDeviceInterfaces ,取得特定裝置介面類別所有已註冊且啟用的裝置介面實例清單。 回傳的清單包含指向 Unicode 符號連結字串的指標,用以識別裝置介面實例。
取得對應於介面實例的裝置或檔案物件指標。
要存取特定裝置物件,驅動程式必須呼叫 IoGetDeviceObjectPointer,並在 ObjectName 參數中傳遞所需介面的 Unicode 字串。 要存取檔案物件,驅動程式必須呼叫 InitializeObjectAttributes,將 Unicode 字串傳入 ObjectName 參數,接著在呼叫 ZwCreateFile 時,傳遞已成功初始化的屬性結構。