Structures opaques du noyau Windows

Le tableau suivant contient des structures opaques du noyau Windows :

Opaque Structure Description
EPROCESS

La structure EPROCESS est une structure opaque qui sert d’objet de processus pour un processus.

Certaines routines, telles que PsGetProcessCreateTimeQuadPart, utilisent EPROCESS pour identifier le processus à utiliser. Les pilotes peuvent utiliser la routine PsGetCurrentProcess pour obtenir un pointeur vers l’objet de processus pour le processus actuel et utiliser la routine ObReferenceObjectByHandle pour obtenir un pointeur vers l’objet de processus associé au handle spécifié. La variable globale PsInitialSystemProcess pointe vers l’objet de processus pour le processus système.

Notez qu’un objet de processus est un objet Object Manager. Les pilotes doivent utiliser des routines Du Gestionnaire d’objets telles que ObReferenceObject et ObDereferenceObject pour maintenir le nombre de références de l’objet.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

ETHREAD

La structure ETHREAD est une structure opaque qui sert d’objet thread pour un thread.

Certaines routines, telles que PsIsSystemThread, utilisent ETHREAD pour identifier le thread à utiliser. Les pilotes peuvent utiliser la routine PsGetCurrentThread pour obtenir un pointeur vers l’objet thread actuel et utiliser la routine ObReferenceObjectByHandle pour obtenir un pointeur vers l’objet thread associé au handle spécifié.

Notez qu’un objet thread est un objet Object Manager. Les pilotes doivent utiliser des routines Du Gestionnaire d’objets telles que ObReferenceObject et ObDereferenceObject pour maintenir le nombre de références de l’objet.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

EX_RUNDOWN_REF

La structure EX_RUNDOWN_REF est une structure système opaque qui contient des informations sur l’état de la protection d’exécution pour un objet partagé associé.

typedef struct _EX_RUNDOWN_REF {
  
  ...  // opaque
  
} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;

Les routines de protection de l’exécution prennent tous un pointeur vers une structure EX_RUNDOWN_REF comme premier paramètre. Ces routines sont répertoriées en bas de cette page.

Pour plus d’informations, consultez La protection d’exécution.

En-tête : Wdm.h. Inclure Wdm.h.

EX_TIMER

La structure EX_TIMER est une structure opaque utilisée par le système d’exploitation pour représenter un objet minuteur EX_TIMER .

typedef struct _EX_TIMER *PEX_TIMER;

Tous les membres de cette structure sont opaques pour les pilotes.

Les routines de minuteur ExXxx suivantes nécessitent un pointeur vers une structure EX_TIMER allouée par le système en tant que paramètre d’entrée :

EX_TIMER objets de minuteur basés sur le système d’exploitation sont créés. Pour obtenir un tel objet de minuteur, votre pilote appelle la routine ExAllocateTimer . Lorsque cet objet n’est plus nécessaire, le pilote est responsable de la suppression de l’objet en appelant ExDeleteTimer.

Pour plus d’informations, consultez Routines du minuteur ExXxxet objets EX_TIMER.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

FAST_MUTEX

Une structure FAST_MUTEX est une structure de données opaque qui représente un mutex rapide.

Une structure FAST_MUTEX est initialisée par la routine ExInitializeFastMutex .

Pour plus d’informations sur les mutex rapides, consultez Mutexes fast et Guarded Mutexes.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

IO_CSQ

La structure IO_CSQ est une structure opaque utilisée pour spécifier les routines de file d’attente IRP annulées du pilote. Ne définissez pas directement les membres de cette structure. Utilisez IoCsqInitialize ou IoCsqInitializeEx pour initialiser cette structure.

Pour obtenir une vue d’ensemble de l’utilisation des files d’attente IRP non sécurisées, consultez Files d’attente IRP cancel-safe.

Disponible sur Microsoft Windows XP et versions ultérieures du système d’exploitation Windows.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

IO_CSQ_IRP_CONTEXT

La structure IO_CSQ_IRP_CONTEXT est une structure de données opaque utilisée pour spécifier le contexte IRP d’un IRP dans la file d’attente IRP annulée du pilote. Il est utilisé comme clé par les routines IoCsqInsertIrp, IoCsqInsertIrpEx et IoCsqRemoveIrp pour identifier des ADRESSES IP spécifiques dans la file d’attente.

Pour obtenir une vue d’ensemble de l’utilisation des files d’attente IRP non sécurisées, consultez Files d’attente IRP cancel-safe.

Disponible sur Microsoft Windows XP et versions ultérieures du système d’exploitation Windows.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

IO_WORKITEM

La structure IO_WORKITEM est une structure opaque qui décrit un élément de travail pour un thread de travail système.

Un pilote peut allouer un élément de travail en appelant IoAllocateWorkItem. Vous pouvez également allouer sa propre mémoire tampon, puis appeler IoInitializeWorkItem pour initialiser cette mémoire tampon en tant qu’élément de travail.

Tout élément de travail alloué par IoAllocateWorkItem doit être libéré par IoFreeWorkItem. Toute mémoire initialisée par IoInitializeWorkItem doit être non initialisée par IoUninitializeWorkItem avant de pouvoir être libérée.

Pour plus d’informations sur les éléments de travail, consultez Threads de travail système.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

KBUGCHECK_CALLBACK_RECORD

La structure KBUGCHECK_CALLBACK_RECORD est une structure opaque utilisée par les routines KeRegisterBugCheckCallback et KeDeregisterBugCheckCallback .

La structure KBUGCHECK_CALLBACK_RECORD est utilisée pour la comptabilité par les routines KeRegisterBugCheckReasonCallback et KeDeregisterBugCheckReasonCallback .

La structure doit être allouée dans la mémoire résidente, telle que le pool non paginé. Utilisez la routine KeInitializeCallbackRecord pour initialiser la structure avant de l’utiliser.

En-tête : Ntddk.h. Inclure : Ntddk.h.

KBUGCHECK_REASON_CALLBACK_RECORD

La structure KBUGCHECK_REASON_CALLBACK_RECORD est une structure opaque utilisée par les routines KeRegisterBugCheckReasonCallback et KeDeregisterBugCheckReasonCallback .

La structure KBUGCHECK_REASON_CALLBACK_RECORD est utilisée pour la comptabilité par les routines KeRegisterBugCheckReasonCallback et KeDeregisterBugCheckReasonCallback .

La structure doit être allouée dans la mémoire résidente, telle que le pool non paginé. Utilisez la routine KeInitializeCallbackRecord pour initialiser la structure avant de l’utiliser.

Disponible sur Microsoft Windows XP avec Service Pack 1 (SP1), Windows Server 2003 et versions ultérieures du système d’exploitation Windows.

En-tête : Ntddk.h. Inclure : Ntddk.h.

KDPC

La structure KDPC est une structure opaque qui représente un objet DPC. Ne définissez pas directement les membres de cette structure. Consultez les objets et les DPCS DPC.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

KFLOATING_SAVE

La structure KFLOATING_SAVE est une structure opaque qui décrit l’état à virgule flottante enregistré par la routine KeSaveFloatingPointState .

Utilisez KeRestoreFloatingPointState pour restaurer l’état à virgule flottante.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

KGUARDED_MUTEX

La structure KGUARDED_MUTEX est une structure opaque qui représente un mutex protégé.

Utilisez KeInitializeGuardedMutex pour initialiser une structure KGUARDED_MUTEX en tant que mutex protégé.

Les mutex guarded doivent être alloués à partir d’un pool non paginé.

Pour plus d’informations sur les mutex surveillés, consultez Mutex rapides et Mutex guarded.

En-tête : Wdm.h. Include : Wdm.h, Ntddk.h, Ntifs.h.

KINTERRUPT

Une structure KINTERRUPT est une structure opaque qui représente une interruption du système.

IoConnectInterruptEx fournit un pointeur vers la structure KINTERRUPT pour l’interruption lorsque le pilote inscrit une routine InterruptService ou InterruptMessageService . Le pilote utilise ce pointeur lors de l’acquisition ou de la libération du verrou de rotation d’interruption pour l’interruption. Le pilote utilise également ce pointeur lors de l’annulation de l’inscription d’une routine InterruptService .

En-tête : Wdm.h. Include : Wdm.h, Ntddk.h, Ntifs.h.

KLOCK_QUEUE_HANDLE

La structure KLOCK_QUEUE_HANDLE est une structure opaque qui décrit un verrou de rotation en file d’attente. Le pilote alloue la structure KLOCK_QUEUE_HANDLE et la transmet à KeAcquireInStackQueuedSpinLock et KeAcquireInStackQueuedSpinLockAtDpcLevel pour acquérir le verrou de rotation mis en file d’attente. Ces routines initialisent la structure pour représenter le verrou de rotation en file d’attente. Le pilote transmet la structure à KeReleaseInStackQueuedSpinLock et KeReleaseInStackQueuedSpinLockFromDpcLevel lors de la libération du verrou de rotation.

Pour plus d’informations, consultez Verrous de rotation en file d’attente.

En-tête : Wdm.h. Include : Wdm.h, Ntddk.h, Ntifs.h.

KTIMER

La structure KTIMER est une structure opaque qui représente un objet minuteur. Ne définissez pas directement les membres de cette structure. Pour plus d’informations, consultez Objets du minuteur et CONTRÔLEURS de domaine.

En-tête : Wdm.h. Include : Wdm.h, Ntddk.h, Ntifs.h.

LOOKASIDE_LIST_EX

La structure LOOKASIDE_LIST_EX décrit une liste de choix.

typedef struct _LOOKASIDE_LIST_EX {
  ...  // opaque
} LOOKASIDE_LIST_EX, *PLOOKASIDE_LIST_EX;

Une liste lookaside est un pool de mémoires tampons de taille fixe que le pilote peut gérer localement pour réduire le nombre d’appels aux routines d’allocation du système et, par conséquent, pour améliorer les performances. Les mémoires tampons sont de taille uniforme et sont stockées en tant qu’entrées dans la liste de choix.

Les pilotes doivent traiter la structure LOOKASIDE_LIST_EX comme opaque. Les pilotes qui accèdent aux membres de la structure ou qui ont des dépendances sur les emplacements de ces membres peuvent ne pas rester portables et interopérables avec d’autres pilotes.

La section Voir aussi suivante contient une liste des routines qui utilisent cette structure.

Pour plus d’informations sur les listes lookaside, consultez Utilisation des listes lookaside.

Sur les plateformes 64 bits, cette structure doit être alignée sur 16 octets.

Prise en charge à partir de Windows Vista.

En-tête : Wdm.h. Include : Wdm.h, Ntddk.h, Ntifs.h.

NPAGED_LOOKASIDE_LIST

La structure NPAGED_LOOKASIDE_LIST est une structure opaque qui décrit une liste de mémoires tampons de taille fixe allouées à partir d’un pool non paginé. Le système crée de nouvelles entrées et détruit les entrées inutilisées dans la liste si nécessaire. Pour les mémoires tampons de taille fixe, l’utilisation d’une liste lookaside est plus rapide que l’allocation directe de la mémoire.

Utilisez ExInitializeNPagedLookasideList pour initialiser la liste lookaside. Utilisez ExAllocateFromNPagedLookasideList pour allouer une mémoire tampon de la liste, et ExFreeToNPagedLookasideList pour retourner une mémoire tampon à la liste.

Les pilotes doivent toujours libérer explicitement toutes les listes de lookaside qu’ils créent avant le déchargement. Il s’agit d’une erreur de programmation grave à faire autrement. Utilisez ExDeleteNPagedLookasideList pour libérer la liste.

Les pilotes peuvent également utiliser des listes de lookaside pour le pool paginé. À compter de Windows 2000, une structure PAGED_LOOKASIDE_LIST décrit une liste de choix qui contient des mémoires tampons paginées. À compter de Windows Vista, une structure LOOKASIDE_LIST_EX peut décrire une liste de choix contenant des mémoires tampons paginées ou non paginées. Pour plus d’informations, consultez Utilisation des listes lookaside.

Sur les plateformes 64 bits, cette structure doit être alignée sur 16 octets.

Prise en charge à partir de Windows 2000.

En-tête : Wdm.h. Include : Wdm.h, Ntddk.h, Ntifs.h.

OBJECT_TYPE

OBJECT_TYPE est une structure opaque qui spécifie le type d’objet d’un handle. Pour plus d’informations, consultez ObReferenceObjectByHandle.

En-tête : Wdm.h. Include : Wdm.h, Ntddk.h, Ntifs.h.

PAGED_LOOKASIDE_LIST

La structure PAGED_LOOKASIDE_LIST est une structure opaque qui décrit une liste de mémoires tampons de taille fixe allouées à partir d’un pool paginé. Le système crée de nouvelles entrées et détruit les entrées inutilisées dans la liste si nécessaire. Pour les mémoires tampons de taille fixe, l’utilisation d’une liste lookaside est plus rapide que l’allocation directe de la mémoire.

Utilisez ExInitializePagedLookasideList pour initialiser la liste lookaside. Utilisez ExAllocateFromPagedLookasideList pour allouer une mémoire tampon de la liste, et ExFreeToPagedLookasideList pour retourner une mémoire tampon à la liste.

Les pilotes doivent toujours libérer explicitement toutes les listes de lookaside qu’ils créent avant le déchargement. Il s’agit d’une erreur de programmation grave à faire autrement. Utilisez ExDeletePagedLookasideList pour libérer la liste.

Les pilotes peuvent également utiliser des listes lookaside pour le pool non paginé. À compter de Windows 2000, une structure NPAGED_LOOKASIDE_LIST décrit une liste de choix qui contient des mémoires tampons non paginés. À compter de Windows Vista, une structure LOOKASIDE_LIST_EX peut décrire une liste de choix contenant des mémoires tampons paginées ou non paginées. Pour plus d’informations, consultez Utilisation des listes lookaside.

Sur les plateformes 64 bits, cette structure doit être alignée sur 16 octets.

Prise en charge à partir de Windows 2000.

En-tête : Wdm.h. Include : Wdm.h, Ntddk.h, Ntifs.h.

RTL_BITMAP

La structure RTL_BITMAP est une structure opaque qui décrit une bitmap.

typedef struct _RTL_BITMAP {
  // opaque
} RTL_BITMAP, *PRTL_BITMAP;

N’accédez pas directement aux membres de cette structure. Les pilotes qui ont des dépendances sur les emplacements des membres ou qui accèdent directement aux valeurs membres peuvent ne pas rester compatibles avec les versions futures du système d’exploitation Windows.

La structure RTL_BITMAP sert d’en-tête pour une image bitmap unidimensionnelle à usage général de longueur arbitraire. Un pilote peut utiliser une image bitmap comme un moyen économique de suivre un ensemble d’éléments réutilisables. Par exemple, un système de fichiers peut utiliser des bitmaps pour suivre les clusters et les secteurs sur un disque dur qui ont déjà été alloués pour contenir des données de fichier.

Pour obtenir la liste des routines RtlXxx qui utilisent RTL_BITMAP structures, consultez la section Voir aussi. L’appelant de ces routines RtlXxx est responsable de l’allocation du stockage pour la structure RTL_BITMAP et de la mémoire tampon qui contient la bitmap. Cette mémoire tampon doit commencer sur une limite de quatre octets en mémoire et doit être un multiple de quatre octets de longueur. La bitmap commence au début de la mémoire tampon, mais peut contenir n’importe quel nombre de bits qui s’adapteront à la mémoire tampon allouée.

Avant de fournir une structure RTL_BITMAP en tant que paramètre à une routine RtlXxx , appelez la routine RtlInitializeBitMap pour initialiser la structure. Les paramètres d’entrée de cette routine sont un pointeur vers une mémoire tampon qui contient la bitmap et la taille, en bits, de la bitmap. RtlInitializeBitMap ne modifie pas le contenu de cette mémoire tampon.

Si l’appelant alloue le stockage pour la structure RTL_BITMAP et la bitmap en mémoire paginée, l’appelant doit s’exécuter à IRQL <= APC_LEVEL lorsqu’il passe un pointeur à cette structure en tant que paramètre à l’une des routines RtlXxx répertoriées dans la section Voir aussi. Si l’appelant alloue le stockage à partir de la mémoire non paginée (ou, de manière équivalente, à partir de la mémoire paginée verrouillée), l’appelant peut s’exécuter à n’importe quel irQL lorsqu’il appelle la routine RtlXxx .

Pris en charge dans Windows 2000 et versions ultérieures de Windows.

En-tête : Wdm.h. Include : Wdm.h, Ntddk.h, Ntifs.h.

RTL_RUN_ONCE

La structure RTL_RUN_ONCE est une structure opaque qui stocke les informations pour une initialisation ponctuelle.

Les pilotes doivent initialiser cette structure en appelant la routine RtlRunOnceInitialize avant de la passer à toutes les autres routines RtlRunOnceXxx .

Disponible uniquement sur Windows Vista et les versions ultérieures du système d’exploitation Windows.

En-tête : Ntddk.h. Inclure : Ntddk.h.

SECURITY_SUBJECT_CONTEXT

La structure SECURITY_SUBJECT_CONTEXT est une structure opaque qui représente le contexte de sécurité dans lequel une opération particulière est effectuée.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

SLIST_HEADER

Une structure SLIST_HEADER est une structure opaque qui sert d’en-tête pour une liste liée séquencée. Pour plus d’informations, consultez Listes liées singly et Doubly.

Sur les plateformes 64 bits, SLIST_HEADER structures doivent être alignées sur 16 octets.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

XSTATE_SAVE

La structure XSTATE_SAVE est une structure opaque qui décrit les informations d’état du processeur étendu qu’un pilote en mode noyau enregistre et restaure.

typedef struct _XSTATE_SAVE {
  ...  // opaque
} XSTATE_SAVE, *PXSTATE_SAVE;

Tous les membres sont opaques.

Cette structure est utilisée par les routines KeSaveExtendedProcessorState et KeRestoreExtendedProcessorState .

Pris en charge dans Windows 7 et versions ultérieures du système d’exploitation Windows.

En-tête : Wdm.h. Inclure : Wdm.h, Ntddk.h, Ntifs.h.

ExAcquireFastMutex

ExAcquireFastMutexUnsafe

ExAllocateFromLookasideListEx

ExAllocateFromNPagedLookasideList

ExAllocateFromPagedLookasideList

ExAllocateTimer

ExDeletePagedLookasideList

ExFreeToPagedLookasideList

ExInitializePagedLookasideList

ExCancelTimer

ExDeleteLookasideListEx

ExDeleteNPagedLookasideList

ExDeleteTimer

ExFlushLookasideListEx

ExFreeToLookasideListEx

ExFreeToNPagedLookasideList

ExInitializeLookasideListEx

ExInitializeNPagedLookasideList

ExInitializeSListHead

ExInterlockedFlushSList

ExInterlockedPopEntrySList

ExInterlockedPushEntrySList

ExQueryDepthSList

ExReleaseFastMutex

ExReleaseFastMutexUnsafe

ExSetTimer

ExTryToAcquireFastMutex

ExTimerCallback

IoAllocateWorkItem

IoConnectInterruptEx

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoDisconnectInterruptEx

IoFreeWorkItem

IoInitializeWorkItem

IoRequestDpc

IoUninitializeWorkItem

KeAcquireGuardedMutex

KeAcquireGuardedMutexUnsafe

KeAcquireInStackQueuedSpinLock

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireInterruptSpinLock

KeCancelTimer

KeInitializeCallbackRecord

KeInitializeGuardedMutex

KeInitializeTimer

KeInitializeTimerEx

KeReadStateTimer

KeRestoreExtendedProcessorState

KeSaveExtendedProcessorState

KeSetTimer

KeSetTimerEx

KeDeregisterBugCheckCallback

KeDeregisterBugCheckReasonCallback

KeInsertQueueDpc

KeRegisterBugCheckCallback

KeRegisterBugCheckReasonCallback

KeReleaseGuardedMutexUnsafe

KeReleaseInStackQueuedSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel

KeReleaseInterruptSpinLock

KeRestoreFloatingPointState

KeSaveFloatingPointState

KeSynchronizeExecution

LookasideListAllocateEx

LookasideListFreeEx

ObReferenceObjectByHandle

PsGetCurrentProcess

PsGetProcessCreateTimeQuadPart

PsInitialSystemProcess

PsIsSystemThread

Lecture des données de rappel de vérification des bogues

RtlRunOnceBeginInitialize

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization

Protection d’exécution

SeAccessCheck

SeAssignSecurity

SeAssignSecurityEx