Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Každý ovladač, který se musí inicializovat ve fázích, může obsahovat rutinu Reinitialize . Rutina Reinitialize se volá poté, co rutina DriverEntry vrátila řízení a ostatní ovladače se inicializovaly samy. Rutina Reinitialize obvykle provádí úlohy, které je třeba provést po spuštění jiného ovladače.
Například ovladač třídy klávesnice systému kbdclass podporuje jak PnP, tak starší porty klávesnice. Pokud systém obsahuje jeden nebo více starších portů, které správce PnP nedokáže rozpoznat, ovladač třídy klávesnice musí přesto vytvořit objekt zařízení pro každý port a vrstvu samotnou nad ovladači nižší úrovně portu. V důsledku toho má ovladač třídy rutinu Reinitialize, která se má volat po volání rutin DriverEntry a AddDevice, a poté, co byly načteny další ovladače. Rutina Reinitialize zjistí port, vytvoří pro něj objekt zařízení a vrství ovladač nad další ovladače nižší úrovně zařízení.
Rutina DriverEntry ovladače volá IoRegisterDriverReinitialization, aby zařadila rutinu Reinitialize pro spuštění. Rutina Reinitialize může také volat samotný IoRegisterDriverReinitialization, což způsobí opětovné vytvoření fronty rutiny. Jeden z parametrů funkce Reinitialize označuje počet, kolikrát byla volána.
Volání IoRegisterDriverReinitialization může zahrnovat ukazatel na kontextová data definovaná ovladačem, která systém poskytuje jako vstup pro reinitializaci. Pokud rutina Reinitialize používá registr, kontextová data by měla obsahovat ukazatel RegistruPath , který byl předán rutině DriverEntry , protože tento ukazatel není vstupním parametrem rutiny Reinitialize .
Rutina Reinitialize nebude volána, pokud DriverEntry nevrátí STATUS_SUCCESS.
Ovladač s rutinou Reinitialize je obvykle ovladač vyšší úrovně, který řídí jak PnP, tak starší zařízení. Kromě vytváření objektů zařízení pro zařízení, která správce PnP detekuje (a pro které správce PnP volá rutinu AddDevice ovladače), musí ovladač také vytvořit objekty zařízení pro starší zařízení, která správce PnP nevypíše. Rutina Reinitialize vytvoří tyto objekty zařízení a vrství ovladač nad další nižší ovladač základního zařízení.
Pokud má ovladač rutinu Reinitialize, inicializuje se ve stejných základních krocích popsaných v oddílu Zápis rutiny DriverEntry a má také stejné základní požadavky jako jeho rutina DriverEntry.