функция обратного вызова EXPAND_STACK_CALLOUT (ntddk.h)
Подпрограмма ExpandedStackCall выполняется с гарантированным размером стека.
Синтаксис
EXPAND_STACK_CALLOUT ExpandStackCallout;
VOID() ExpandStackCallout(
[in, optional] PVOID Parameter
)
{...}
Параметры
[in, optional] Parameter
Значение, переданное в подпрограмму KeExpandKernelStackAndCallout , которая выполняла ExpandedStackCall.
Возвращаемое значение
None
Remarks
Подпрограмма ExpandedStackCall должна обрабатывать все исключения. Любое необработанное исключение приводит к тому, что система проверка ошибок с 0x1E проверки ошибок: KMODE_EXCEPTION_NOT_HANDLED.
Если ExpandedStackCall изменяет текущий IRQL, перед возвратом необходимо восстановить исходное значение.
Примеры
Чтобы определить подпрограмму обратного вызова ExpandedStackCall , необходимо сначала предоставить объявление функции, определяющее тип определяемой процедуры обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.
Например, чтобы определить подпрограмму обратного вызова ExpandedStackCall с именем MyExpandedStackCall
, используйте тип EXPAND_STACK_CALLOUT, как показано в следующем примере кода:
EXPAND_STACK_CALLOUT MyExpandedStackCall;
Затем реализуйте процедуру обратного вызова следующим образом:
_Use_decl_annotations_
VOID
MyExpandedStackCall(
PVOID Parameter
)
{
// Function body
}
Тип функции EXPAND_STACK_CALLOUT определяется в файле заголовка Wdm.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку в _Use_decl_annotations_
определение функции. Заметка _Use_decl_annotations_
гарантирует, что будут использоваться заметки, которые применяются к типу функции EXPAND_STACK_CALLOUT в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов WDM. Дополнительные сведения о _Use_decl_annotations_
см. в статье Поведение функции с заметками.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | ntddk.h (включая Ntddk.h, Ntifs.h) |