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 |