Функция 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 (см. раздел "Примечания")) |