Partager via


ExEnterCriticalRegionAndAcquireResourceExclusive, fonction (wdm.h)

La routine ExEnterCriticalRegionAndAcquireResourceExclusive entre d’abord dans une région critique, puis acquiert un accès exclusif à la ressource spécifiée.

Syntaxe

PVOID ExEnterCriticalRegionAndAcquireResourceExclusive(
  PERESOURCE Resource
);

Paramètres

Resource

[in, out] Pointeur vers la ressource à acquérir pour un accès exclusif. Ce paramètre pointe vers une structure ERESOURCE allouée par l’appelant. L’appelant a précédemment alloué cette structure à partir d’un pool non paginé et l’a initialisée en appelant la routine ExInitializeResourceLite ou ExReinitializeResourceLite .

Valeur retournée

Pointeur vers une structure système opaque. Les pilotes doivent ignorer cette valeur de retour.

Remarques

Si cette routine est appelée lorsque la ressource spécifiée n’est pas immédiatement disponible pour un accès exclusif, le thread appelant est bloqué jusqu’à ce que la ressource soit disponible.

Alors qu’un thread de pilote s’exécute dans la région critique, les API utilisateur du pilote et les API du noyau normal ne sont pas exécutés. Les API de noyau spéciales sont toujours exécutées. Pour plus d’informations sur ces types APC, consultez Types d’API.

En désactivant temporairement les API de noyau normales, ExEnterCriticalRegionAndAcquireResourceExclusive empêche un thread appelant de niveau passif d’être préempté par un APC alors que le thread contient une ressource partagée à laquelle l’APC peut tenter d’accéder.

Le thread appelant doit rester dans la région critique et contenir la ressource spécifiée plus longtemps que nécessaire. Pour libérer la ressource spécifiée et quitter la région critique, appelez la routine ExReleaseResourceAndLeaveCriticalRegion .

Pour plus d’informations sur l’utilisation d’une structure ERESOURCE pour synchroniser l’accès exclusif à une ressource, consultez Présentation des routines ERESOURCE. Pour plus d’informations sur l’entrée et la sortie d’une région critique, consultez Régions critiques et régions surveillées.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2003 SP1
En-tête wdm.h
IRQL <= APC_LEVEL
Règles de conformité DDI CriticalRegions(wdm), HwStorPortProhibitedDDDIs(storport)

Voir aussi

ERESOURCE

ExAcquireResourceExclusiveLite

ExInitializeResourceLite

ExReinitializeResourceLite

ExReleaseResourceLite

ExReleaseResourceAndLeaveCriticalRegion

KeEnterCriticalRegion

KeLeaveCriticalRegion