функция обратного вызова EXPAND_STACK_CALLOUT (ntddk.h)
Подпрограмма ExpandedStackCall выполняется с гарантированным размером стека.
Синтаксис
EXPAND_STACK_CALLOUT ExpandStackCallout;
VOID() ExpandStackCallout(
[in, optional] PVOID Parameter
)
{...}
Параметры
[in, optional] Parameter
Значение, переданное в подпрограмму KeExpandKernelStackAndCall out, которая выполнила ExpandedStackCall.
Возвращаемое значение
Никакой
Замечания
Подпрограмма 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 (include Ntddk.h, Ntifs.h) |