處理裝置介面變更事件
當驅動程式或使用者模式元件啟用或停用裝置介面實例時,PnP 管理員會在裝置介面類別別上呼叫已註冊 EventCategoryDeviceInterfaceChange 事件的所有通知回呼常式。 為了指出通知的原因,PnP 管理員會將回呼常式NotificationStructure參數的Event成員設定為GUID_DEVICE_INTERFACE_ARRIVAL或GUID_DEVICE_INTERFACE_REMOVAL。
處理GUID_DEVICE_INTERFACE_ARRIVAL事件時,通知回呼常式應該:
執行驅動程式定義的工作來處理新的介面。
一般而言,通知回呼常式會在回呼的內容中直接開啟裝置。 不過,如果開啟裝置可能會導致後續的 PnP 事件發生 (例如,子裝置的列舉) ,回呼常式應該改為將背景工作常式排入佇列以開啟裝置;否則,可能會發生死結。
回呼常式可能會啟用自己的介面,以回應新介面的可用性。
處理GUID_DEVICE_INTERFACE_REMOVAL事件時,通知回呼常式應該:
- 復原啟用介面時所執行的任何作業。 關閉任何開啟的檔案控制碼,以回應介面抵達事件。
除了 EventCategoryDeviceInterfaceChange之外,驅動程式也必須註冊 EventCategoryTargetDeviceChange,並從 GUID_TARGET_DEVICE_QUERY_REMOVE 事件回呼關閉檔案控制代碼。 將檔案控制碼保持開啟將會保留移除程式,並導致取消順序移除。