共用方式為


使用者插入裝置

在下列案例中,裝置節點包含 KMDF 匯流排驅動程式,以及一或多個 KMDF 函式或篩選支援 PnP 裝置的驅動程式。

當使用者在執行系統時將裝置插入匯流排時,裝置的匯流排驅動程式和架構會執行下列工作:

如需 KMDF 匯流排驅動程式電源啟動序列的詳細資訊,請參閱 匯流排驅動程式的電源啟動順序

接下來,PnP 管理員會決定哪些額外的驅動程式 (函式驅動程式,並在裝置) 篩選驅動程式。 如果尚未載入這些驅動程式,PnP 管理員會載入這些驅動程式並呼叫其 DriverEntry 常式。 針對每個函式或篩選驅動程式,會發生下列動作:

  • 架構會呼叫每個額外的驅動程式 EvtDriverDeviceAdd 回呼函式,讓驅動程式可以呼叫 WdfDeviceCreate 來建立架構裝置物件,代表驅動程式的裝置。 函式驅動程式會在 FDO) (建立功能裝置物件,而篩選驅動程式會建立篩選設備物件 (Filter DO) 。

  • 架構會呼叫每個函式,並篩選驅動程式的 EvtDeviceFilterRemoveResourceRequirements 回呼函式,然後每個驅動程式的 EvtDeviceFilterAddResourceRequirements 回呼函式。 在裝置啟動之前,架構會立即呼叫 EvtDeviceRemoveAddedResources 回呼函式。 這三個回呼函式可讓篩選和函式驅動程式在 PnP 管理員將資源指派給裝置之前,修改裝置所需的硬體資源清單。 如需詳細資訊,請參閱 Framework-Based 驅動程式的硬體資源

  • 架構可確保裝置已達到其運作 (D0) 電源狀態。

  • 針對支援裝置的每個函式和篩選驅動程式,架構會依序執行下列動作,一次一個驅動程式,從驅動程式堆疊中最低驅動程式開始:

    1. 如果驅動程式存在) ,架構會呼叫驅動程式的 EvtDevicePrepareHardware 回呼函式 (,並傳遞 PnP 管理員指派給裝置的硬體資源清單。
    2. 如果驅動程式存在) ,架構會呼叫驅動程式的 EvtDeviceD0Entry 回呼函式 (。
    3. 架構會呼叫驅動程式的 EvtInterruptEnable 回呼函式 (,如果每個中斷存在) ,則它會呼叫驅動程式的 EvtDeviceD0EntryPostInterruptsEnabled 回呼函式, (如果存在) ,則驅動程式可以啟用裝置中斷。
    4. 如果硬體和驅動程式支援 DMA,架構會針對所建立的每個 DMA 通道呼叫驅動程式的EvtDmaEnablerFillEvtDmaEnablerEnablerSelfManagedIoStart回呼函式, (它們存在) 。
    5. 架構會在) 存在時呼叫驅動程式的 EvtChildListScanForChildren 回呼函式 (。
    6. 架構會啟動所有裝置的電源受控 I/O 佇列。
    7. 如果驅動程式使用自我管理 I/O,架構會呼叫驅動程式的 EvtDeviceSelfManagedIoInit 回 呼函式。

如需 KMDF 函式或篩選驅動程式之電源啟動序列的詳細資訊,請參閱函式 或篩選驅動程式的電源啟動序列