Sdílet prostřednictvím


Uvolnění rutinního prostředí

Operační systém uvolní ovladač, když je ovladač nahrazen nebo když byla odstraněna všechna zařízení, která ovladač obsluhoval. Správce PnP volá rutinu uvolnění ovladače PnP, pokud ovladač nemá žádné další objekty zařízení po zpracování žádosti IRP_MN_REMOVE_DEVICE .

Na začátku sekvence uvolňování označí správce vstupně-výstupních operací nebo správce PnP objekt ovladače a jeho objekty zařízení jako "Unload Pending". Jakmile je ovladač označen jako "Unload Pending", nemohou se k němu připojit žádné další ovladače a také nelze vytvářet žádné další odkazy na objekty zařízení ovladače. Ovladač může dokončit nevyřízené IRP, ale systém neodesílá ovladači žádné nové IRP.

Správce vstupně-výstupních operací volá rutinu Uvolnění ovladače , pokud jsou splněny všechny následující podmínky:

  • Žádné odkazy nezůstanou na žádný z objektů zařízení, které ovladač vytvořil. Jinými slovy, žádné soubory přidružené k podkladovému zařízení nemohou být otevřeny, ani u žádného z objektů zařízení ovladače nesmějí být žádné IRP nevyřízené.

  • K tomuto ovladači nejsou připojeny žádné další ovladače.

  • Ovladač volal IoUnregisterPlugPlayNotification k zrušení registrace všech oznámení PnP, které byly dříve zaregistrovány.

Všimněte si, že rutina Unload není volána, pokud rutina DriverEntry ovladače vrátí stav selhání. V tomto případě správce vstupně-výstupních operací jednoduše uvolní místo na paměti, které ovladač zabírá.

Správce PnP ani správce vstupně-výstupních operací nevyvolá rutiny uvolnění v době vypnutí systému. Ovladač, který musí provádět zpracování vypnutí, by měl zaregistrovat rutinu DispatchShutdown .