支援退出的裝置

可退出的裝置 是可以插入停駐站並從停駐站退出的裝置。 一般而言,必須先停用可退出裝置的匯流排電源,才能移除裝置。

如果裝置無法退出,裝置匯流排的匯流排驅動程式必須在裝置的WDF_DEVICE_PNP_CAPABILITIES結構中設定「退出」成員。

當匯流排驅動程式判斷其其中一個列舉的子裝置即將退出時,它會呼叫 WdfPdoRequestEjectWdfChildListRequestChildEject。 例如,公車驅動程式可能會偵測到使用者已按下退出按鈕。

當驅動程式呼叫 WdfChildListRequestChildEjectWdfPdoRequestEject時,PnP 管理員會使用 循序移除 案例來通知裝置的驅動程式正在移除裝置。 在架構在裝置匯流排的匯流排驅動程式中呼叫 EvtDeviceReleaseHardware 回呼函式之後,架構會呼叫匯流排驅動程式的 EvtDeviceEject 回呼函式,以執行實際退出裝置所需的任何作業。

如果退出您的裝置會導致其他裝置也退出,則您的匯流排驅動程式可以維護 退出關係的清單。 當使用者移除您的裝置時,PnP 管理員會通知清單中的裝置驅動程式,他們的裝置也會遭到移除。 若要維護退出關聯的清單,匯流排驅動程式可以使用 WdfPdoAddEjectionRelationsPhysicalDeviceWdfPdoRemoveEjectionRelationsPhysicalDeviceWdfPdoClearEjectionRelationsDevices 方法。

如果裝置可以在其停駐站中鎖定,匯流排驅動程式必須在裝置的WDF_DEVICE_PNP_CAPABILITIES結構中設定LockSupported成員。 匯流排驅動程式也必須提供 EvtDeviceSetLock 回呼函式,以鎖定裝置以停用退出或解除鎖定裝置以啟用退出。