функция обратного вызова EXT_DELETE_CALLBACK (wdm.h)
Подпрограмма обратного вызова ExTimerDeleteCallback выполняется, когда операционная система удаляет объект EX_TIMER таймера.
Синтаксис
EXT_DELETE_CALLBACK ExtDeleteCallback;
void ExtDeleteCallback(
[in, optional] PVOID Context
)
{...}
Параметры
[in, optional] Context
Значение контекста из элемента DeleteContextструктуры EXT_DELETE_PARAMETERS , которую драйвер ранее передал в качестве входного параметра в подпрограмму ExDeleteTimer .
Возвращаемое значение
None
Remarks
В качестве варианта драйвер может предоставить указатель на подпрограмму ExTimerDeleteCallback в элементе DeleteCallbackструктуры EXT_DELETE_PARAMETERS , которую драйвер передает в качестве входного параметра в подпрограмму ExDeleteTimer . Подпрограмма ExTimerDeleteCallback может освободить любое хранилище или другие системные ресурсы, которые драйвер мог ранее выделить для использования с удаляемого объекта таймера.
Если драйвер предоставляет подпрограмму ExTimerDeleteCallback , а параметр Wait в вызове ExDeleteRoutine имеет значение TRUE, подпрограмма ExTimerDeleteCallback выполняется до возврата ExDeleteTimer . В противном случае подпрограмма ExTimerDeleteCallback может выполняться до или после возврата вызова ExDeleteTimer . Подпрограмма ExTimerDeleteCallback вызывается только после отключения объекта таймера, чтобы предотвратить дальнейшие операции таймера, а все ожидающие операции таймера с объектом таймера будут отменены или завершены. Объект таймера ( структура EX_TIMER ), который драйвер передает в качестве входного параметра подпрограмме ExDeleteTimer , может быть недействительным к моменту выполнения процедуры ExTimerDeleteCallback .
Дополнительные сведения см. в разделе Подпрограммы ExXxxTimer и объекты EX_TIMER.
Примеры
Чтобы определить подпрограмму обратного вызова ExTimerDeleteCallback , необходимо сначала предоставить объявление функции, определяющее тип определяемой процедуры обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типа функции обратного вызова помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.
Например, чтобы определить подпрограмму обратного вызова ExTimerDeleteCallback с именем MyExTimerDeleteCallback
, используйте тип функции EXT_DELETE_CALLBACK, как показано в следующем примере кода:
EXT_DELETE_CALLBACK MyExTimerDeleteCallback;
Затем реализуйте процедуру обратного вызова следующим образом:
_Use_decl_annotations_
VOID
MyExTimerDeleteCallback(
PVOID Context
)
{...}
Тип функции EXT_DELETE_CALLBACK определяется в файле заголовка Wdm.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку в _Use_decl_annotations_
определение функции. Заметка _Use_decl_annotations_
гарантирует, что будут использоваться заметки, которые применяются к типу функции EXT_DELETE_CALLBACK в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов WDM. Дополнительные сведения о _Use_decl_annotations_
см. в разделе Заметки о поведении функции.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно, начиная с Windows 8.1. |
Целевая платформа | Персональный компьютер |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | Звонил на DISPATCH_LEVEL. |