Condividi tramite


PnP Manager Ridistribuisce le risorse di sistema

Se un utente aggiunge un dispositivo a un sistema e se il dispositivo richiede risorse di sistema già assegnate dal manager PnP a un altro dispositivo, il manager PnP tenta di riassegnare le risorse.

Durante questo processo, il gestore PnP arresta i dispositivi e li toglie dagli stati di lavoro (D0). Distribuisce quindi nuovi elenchi di risorse ai dispositivi in modo che possano essere riavviati, usando le nuove risorse.

Durante la ridistribuzione delle risorse, il gestore PnP non modificherà l'assegnazione di risorse di un dispositivo se uno dei driver del dispositivo ha:

sequenza Power-Down

Per ogni driver di funzione e filtro che supporta l'arresto del dispositivo, il framework esegue le operazioni seguenti, in sequenza, un driver alla volta, a partire dal driver più alto nello stack di driver:

  1. Se il driver utilizza un I/O autogestito, il framework chiama la funzione di callback EvtDeviceSelfManagedIoSuspend del driver.

  2. Il framework arresta tutte le code di I/O a gestione energetica del dispositivo.

  3. Se l'hardware e il driver supportano DMA, il framework chiama le funzioni di callback del driver EvtDmaEnablerSelfManagedIoStop, EvtDmaEnablerFlush, e EvtDmaEnablerDisable per ogni canale DMA creato.

  4. Chiama le funzioni di callback EvtDeviceD0ExitPreInterruptsDisabled e EvtInterruptDisable (se esistono) in modo che il driver possa disabilitare gli interrupt del dispositivo.

  5. Il framework chiama la funzione di callback del driver EvtDeviceD0Exit (se esiste).

  6. Il framework chiama la funzione di callback EvtDeviceReleaseHardware del driver (se esiste) passando l'elenco delle risorse hardware che il manager PnP ha assegnato al dispositivo.

Il conducente del bus è il conducente più basso nello stack e viene chiamato per ultimo. Quando il framework chiama la funzione di callback EvtDeviceD0Exit del driver del bus, passa un handle all'oggetto dispositivo del framework che rappresenta il PDO del dispositivo e un valore TargetState di WdfPowerDeviceD3Final. Il driver del bus può controllare quando il framework chiama il relativo EvtDeviceReleaseHardware funzione di callback chiamando WdfDeviceInitSetReleaseHardwareOrderOnFailure.

Sequenza Power-Up

Il primo conducente chiamato è il conducente dell'autobus. Quando il framework chiama la funzione di callback EvtDeviceD0Entry del driver del bus, la funzione ripristina il dispositivo (un dispositivo figlio del bus) al suo stato operativo (D0).

Per ogni driver di funzione e filtro che supporta il dispositivo, il framework esegue le operazioni seguenti, in sequenza, un driver alla volta, a partire dal driver più basso nello stack di driver:

  1. Il framework chiama la funzione di callback EvtDevicePrepareHardware del driver (se esiste), passando l'elenco delle risorse hardware assegnate dal gestore PnP al dispositivo.

  2. Il framework chiama la funzione di callback EvtDeviceD0Entry del driver (se esiste).

  3. Il framework chiama il EvtInterruptEnable del driver e EvtDeviceD0EntryPostInterruptsEnabled funzioni di callback (se esistenti) in modo che il driver possa abilitare gli interrupt del dispositivo.

  4. Se l'hardware e il driver supportano DMA, il framework chiama le funzioni di callback EvtDmaEnablerFill, EvtDmaEnablerEnablee EvtDmaEnablerSelfManagedIoStart per ogni canale DMA creato.

  5. Il framework chiama la funzione di callback del driver EvtChildListScanForChildren (se esiste).

  6. Il framework riavvia tutte le code di I/O a gestione energetica del dispositivo.

  7. Se il driver usa I/O autogestito, il framework chiama la funzione di callback del driver EvtDeviceSelfManagedIoRestart.