Функция IoRegisterDriverReinitialization (ntddk.h)
Подпрограмма IoRegisterDriverReinitialization вызывается драйвером во время ее инициализации или повторной инициализации, чтобы зарегистрировать ее подпрограмму Повторной инициализации , которая будет вызвана еще раз до завершения инициализации драйвера и, возможно, системы.
Синтаксис
void IoRegisterDriverReinitialization(
[in] PDRIVER_OBJECT DriverObject,
[in] PDRIVER_REINITIALIZE DriverReinitializationRoutine,
[in, optional] PVOID Context
);
Параметры
[in] DriverObject
Указатель на объект драйвера, который входил в подпрограмму DriverEntry .
[in] DriverReinitializationRoutine
Указатель на подпрограмму повторной инициализации драйвера.
[in, optional] Context
Указатель на контекст, передаваемый в подпрограмму повторной инициализации драйвера.
Возвращаемое значение
None
Remarks
Драйвер может вызывать эту подпрограмму только в том случае, если ее подпрограмма DriverEntry вернет STATUS_SUCCESS. Если предоставленная драйвером подпрограмма Reinitialize должна использовать реестр, подпрограмма DriverEntry должна включать копию строки, на которую указывает RegistryPath как часть контекста, переданного подпрограмме Reinitialize в этом вызове.
Если драйвер загружается динамически, это может произойти во время обычно работающей системы, поэтому все ссылки на очередь повторной инициализации должны быть синхронизированы.
Входные данные Count для DriverReinitializationRoutine указывают, сколько раз была вызвана эта подпрограмма, включая текущий вызов.
Подпрограмма DriverEntry может вызывать IoRegisterDriverReinitialization только один раз. Если подпрограмма Повторная инициализация должна быть запущена снова после того, как другие подпрограммы инициализации других драйверов вернули управление, подпрограмма Reinitialize также может вызывать IoRegisterDriverReinitialization столько раз, сколько должна быть запущена подпрограмма Повторно инициализация драйвера.
Обычно драйвер с подпрограммой повторной инициализации — это драйвер более высокого уровня, который управляет как PnP, так и устаревшими устройствами. Такой драйвер должен не только создавать объекты устройств, обнаруженных диспетчером PnP (и для которых диспетчер PnP вызывает подпрограмму AddDevice драйвера), но и создавать объекты устройств для устаревших устройств, которые диспетчер PnP не обнаруживает. Драйвер может использовать подпрограмму повторной инициализации для создания этих объектов устройства и наложения драйвера на следующий более низкий драйвер для базового устройства.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | ntddk.h (включая Ntddk.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по