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


Функция 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, любой последующий вызов RtlRunOnceBeginInitialize для той же структуры RTL_RUN_ONCE предоставляет Контекст в качестве инициализированных данных.

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows Vista и более поздних версиях Windows.
целевая платформа Всеобщий
заголовка ntddk.h (include Ntddk.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также

RTL_RUN_ONCE

RtlRunOnceBeginInitialize

RtlRunOnceExecuteOnceOnce

RtlRunOnceInitialize

RunOnceInitialization