Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Система определяет три объекта обратного вызова для использования драйверами:
\Callback\SetSystemTime
\Callback\PowerState
\Callback\ProcessorAdd
Драйверы, использующие системное время (например, драйверы файловой системы), могут регистрироваться для объекта обратного вызова \Callback\SetSystemTime . Этот обратный вызов обеспечивает уведомление при изменении системного времени.
Объект обратного вызова \Callback\PowerState предоставляет уведомление при возникновении одного из следующих событий:
Система переключается с переменного тока на питание постоянного тока или наоборот.
Политика управления питанием системы изменяется в результате запроса пользователя или приложения.
Переход в состояние спящего режима или завершения работы системы неизбежен. Драйвер может запросить уведомление, чтобы он смог заблокировать код в памяти в ожидании завершения работы. Процедуры обратного вызова будут уведомлены до того, как диспетчер питания отправит IRP для настройки питания системы.
Обратный вызов \Callback\ProcessorAdd предоставляет уведомление при добавлении нового процессора в систему.
Чтобы использовать системный обратный вызов, драйвер инициализирует блок атрибутов, вызывая InitializeObjectAttributes с именем обратного вызова, а затем открывает объект обратного вызова (ExCreateCallback) так же, как и для обратного вызова, определенного драйвером. Драйвер не должен запрашивать создание объекта обратного вызова.
С дескриптором, возвращенным ExCreateCallback, драйвер вызывает ExRegisterCallback для регистрации процедуры уведомления, передавая указатель на произвольный контекст и указатель на ее подпрограмму. Драйвер может зарегистрировать свою процедуру обратного вызова в любое время. При возникновении указанного условия система вызывает зарегистрированную подпрограмму обратного вызова в IRQL<=DISPATCH_LEVEL.
Если драйвер больше не требует уведомления, он должен вызвать ExUnregisterCallback , чтобы удалить свою подпрограмму обратного вызова из списка зарегистрированных обратных вызовов и удалить ссылку на объект обратного вызова.