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


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

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

KeExpandKernelStackAndCallout