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

Подпрограмма RtlRunOnceComplete завершает однократную инициализацию, начатую rtlRunOnceBeginInitialize.

Синтаксис

NTSYSAPI NTSTATUS RtlRunOnceComplete(
  [in, out]      PRTL_RUN_ONCE RunOnce,
  [in]           ULONG         Flags,
  [in, optional] PVOID         Context
);

Параметры

[in, out] RunOnce

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

[in] Flags

При необходимости драйверы могут указывать один или несколько следующих флагов:

RTL_RUN_ONCE_ASYNC

Работа в асинхронном режиме. Этот режим позволяет выполнять несколько попыток завершения параллельно. Если используется этот флаг, последующие вызовы подпрограммы RtlRunOnceComplete завершатся ошибкой, если этот флаг также не указан.

RTL_RUN_ONCE_INIT_FAILED

Попытка инициализации завершилась сбоем.

[in, optional] Context

Указывает инициализированные данные.

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

RtlRunOnceComplete возвращает одно из следующих значений NTSTATUS:

Код возврата Описание
STATUS_SUCCESS
Операция выполнена успешно.
STATUS_UNSUCCESSFUL
Не удалось завершить операцию. Если вызывающий объект, указанный RTL_RUN_ONCE_ASYNC в параметре Flags , это значение может указывать на то, что другой поток завершил инициализацию.

Комментарии

Если RtlRunOnceComplete возвращает STATUS_SUCCESS, любой последующий вызов RtlRunOnceBeginInginInitialize для той же структуры RTL_RUN_ONCE предоставляет контекст в качестве инициализированных данных.

Если вызывающий объект, указанный RTL_RUN_ONCE_ASYNC в параметре Flags , а RtlRunOnceComplete возвращает любое значение, отличное от STATUS_SUCCESS, вызывающий объект должен очистить все попытки инициализации.

Требования

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

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

RTL_RUN_ONCE

RtlRunOnceBeginInitialize

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization