Функция RtlRunOnceBeginInitialize (ntddk.h)
Подпрограмма RtlRunOnceBeginInitialize начинает однократную инициализацию.
Синтаксис
NTSYSAPI NTSTATUS RtlRunOnceBeginInitialize(
[in, out] PRTL_RUN_ONCE RunOnce,
[in] ULONG Flags,
[out] PVOID *Context
);
Параметры
[in, out] RunOnce
Указатель на RTL_RUN_ONCE структуру одноразовой инициализации.
[in] Flags
При необходимости драйверы могут указывать один или несколько следующих флагов:
RTL_RUN_ONCE_ASYNC
Выполнение асинхронной инициализации. Драйвер может выполнять несколько попыток завершения параллельно. Если этот флаг используется, последующие вызовы этой подпрограммы завершатся ошибкой, если этот флаг также не указан.
RTL_RUN_ONCE_CHECK_ONLY
Не начинайте инициализацию, но проверка, чтобы определить, произошла ли инициализация. Если RtlRunOnceBeginInitialize возвращает STATUS_SUCCESS, инициализация выполнена успешно, а *Context содержит инициализированные данные.
[out] Context
Указывает указатель на переменную PVOID, которая получает инициализированные данные. Значение *Context допустимо только в том случае, если подпрограмма возвращает STATUS_SUCCESS.
Возвращаемое значение
RtlRunOnceBeginInitialize возвращает одно из следующих значений NTSTATUS:
Код возврата | Описание |
---|---|
|
Одноразовая инициализация уже завершена. Инициализированные данные хранятся в расположении памяти, на которое указывает Контекст . |
|
Вызывающий объект успешно начал однократную инициализацию. Вызывающий объект теперь выполняет шаги инициализации для конкретного драйвера, а затем вызывает RtlRunOnceComplete для завершения инициализации. |
Комментарии
Драйверы также могут выполнять однократную инициализацию, вызывая RtlRunOnceExecuteOnce и предоставляя подпрограмму RunOnceInitialization .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows Vista и более поздних версиях Windows. |
Целевая платформа | Универсальное |
Верхняя часть | ntddk.h (включая Ntddk.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |