Partager via


Fonction RtlRunOnceExecuteOnce (ntddk.h)

RtlRunOnceExecuteOnce effectue une initialisation unique.

Syntaxe

NTSYSAPI NTSTATUS RtlRunOnceExecuteOnce(
  PRTL_RUN_ONCE         RunOnce,
  PRTL_RUN_ONCE_INIT_FN InitFn,
  PVOID                 Parameter,
  PVOID                 *Context
);

Paramètres

[in, out] RunOnce

Pointeur vers la structure d’initialisation unique RTL_RUN_ONCE .

[in] InitFn

Pointeur vers une routine RunOnceInitialization .

[in, out] Parameter

Valeur à passer en tant que paramètre Parameter à la routine RunOnceInitialization .

[out] Context

Pointeur vers une variable PVOID qui reçoit les données initialisées.

Valeur retournée

RtlRunOnceExecuteOnce retourne STATUS_SUCCESS si l’opération réussit, ou le code d’erreur NTSTATUS approprié en cas d’échec de l’opération.

Remarques

Pour le premier appel à RtlRunOnceExecuteOnce pour une structure de RTL_RUN_ONCE particulière, RtlRunOnceExecuteOnce appelle la routine RunOnceInitialization pour initialiser les données. Chaque appel suivant à RtlRunOnceExecuteOnce pour cette structure fournit les mêmes données initialisées. La routine RunOnceInitialization ne sera pas appelée deux fois pour la même structure RTL_RUN_ONCE .

RtlRunOnceExecuteOnce s’exécute avec les API de noyau normales désactivées. La routine ne doit pas être appelée dans un APC de noyau spécial, sauf si tous les appels se produisent à APC_LEVEL.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows Vista.
Plateforme cible Universal
En-tête ntddk.h (incluez Ntddk.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL (voir la section Notes.)

Voir aussi

RTL_RUN_ONCE

RtlRunOnceBeginInitialize

RtlRunOnceComplete

RtlRunOnceInitialize

RunOnceInitialization