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


Функция RtlRunOnceExecuteOnce (ntddk.h)

RtlRunOnceExecuteOnce выполняет однократную инициализацию.

Синтаксис

NTSYSAPI NTSTATUS RtlRunOnceExecuteOnce(
  PRTL_RUN_ONCE         RunOnce,
  PRTL_RUN_ONCE_INIT_FN InitFn,
  PVOID                 Parameter,
  PVOID                 *Context
);

Параметры

[in, out] RunOnce

Указатель на RTL_RUN_ONCE структуру одноразовой инициализации.

[in] InitFn

Указатель на подпрограмму RunOnceInitialization .

[in, out] Parameter

Значение, передаваемое в качестве параметра Parameter в подпрограмму RunOnceInitialization .

[out] Context

Указатель на переменную PVOID, которая получает инициализированные данные.

Возвращаемое значение

RtlRunOnceExecuteOnce возвращает STATUS_SUCCESS, если операция выполнена успешно, или соответствующий код ошибки NTSTATUS в случае сбоя операции.

Комментарии

Для первого вызова RtlRunOnceExecuteOnce для конкретной структуры RTL_RUN_ONCERtlRunOnceExecuteOnce вызывает подпрограмму RunOnceInitialization для инициализации данных. Каждый последующий вызов RtlRunOnceExecuteOnce для этой структуры предоставляет те же инициализированные данные. Подпрограмма RunOnceInitialization не будет вызываться дважды для одной и той же структуры RTL_RUN_ONCE .

RtlRunOnceExecuteOnce выполняется с отключенными обычными APC ядра. Подпрограмма не должна вызываться в специальном APC ядра, если только все вызовы не выполняются в APC_LEVEL.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows Vista.
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Ntddk.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL (см. раздел "Примечания"))

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

RTL_RUN_ONCE

RtlRunOnceBeginInitialize

RtlRunOnceComplete

RtlRunOnceInitialize

RunOnceInitialization