Partager via


Fonction RtlRunOnceExecuteOnce (ntddk.h)

La 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 à transmettre en tant que paramètre Paramètre à la routine RunOnceInitialization.

[out] Context

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

Valeur de retour

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 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 des 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.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows Vista.
plateforme cible Universel
d’en-tête ntddk.h (include Ntddk.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL (voir la section Remarques.)

Voir aussi

RTL_RUN_ONCE

RtlRunOnceBeginInitialize

RtlRunOnceComplete

RtlRunOnceInitialize

RunOnceInitialization