Поделиться через


функция обратного вызова 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.

См. также раздел

EXT_DELETE_PARAMETERS

EX_TIMER

ExDeleteTimer