共用方式為


使用裝置介面

裝置介面適用於核心模式元件和使用者模式應用程式。 例如,使用者模式程式代碼可以使用 CfgMgr32 式 (,例如, CM_Get_Device_Interface_List) SetupDiXxx 函式 (請參閱 SetupDi 裝置介面函 式) 以瞭解已註冊、已啟用的裝置介面。 然後,使用者模式應用程式可以使用 I/O API,例如 CreateFile 來取得裝置的句柄,以便將 I/O 傳送給裝置。 若要取得裝置介面啟用和停用的通知,以及如何回應這些動作,請參閱 註冊裝置介面抵達和裝置移除通知

核心模式元件必須先執行下列動作,才能使用特定裝置或檔案物件:

  1. 判斷是否已註冊並啟用必要的裝置介面類別。

    驅動程式可以向 PnP 管理員註冊,以在啟用或停用裝置介面的實例時收到通知。 若要註冊,元件會呼叫 IoRegisterPlugPlayNotification。 此例程會針對指定的裝置類別儲存驅動程式提供的回呼位址,每當啟用或停用裝置介面實例的實例時,就會呼叫此回呼。 回呼例程會接收 DEVICE_INTERFACE_CHANGE_NOTIFICATION 結構,其中包含代表介面實例符號連結的 Unicode 字串。 如需詳細資訊,請參閱 使用 PnP 裝置介面變更通知

    驅動程式或其他核心模式元件也可以呼叫 IoGetDeviceInterfaces ,以取得特定裝置介面類別的所有已註冊、已啟用裝置介面實例的清單。 傳回的清單包含識別裝置介面實例之 Unicode 符號連結字串的指標。

  2. 取得對應至介面實例的裝置或檔案物件的指標。

    若要存取特定裝置對象,驅動程式必須呼叫 IoGetDeviceObjectPointer,並傳遞 ObjectName 參數中必要介面的 Unicode 字串。 若要存取檔案對象,驅動程式必須呼叫 InitializeObjectAttributes、在 ObjectName 參數中傳遞 Unicode 字元串,然後在呼叫 ZwCreateFile 時傳遞成功初始化的屬性結構。