Fonction ExWaitForRundownProtectionReleaseCacheAware (wdm.h)

La routine ExWaitForRundownProtectionReleaseCacheAware attend que tous les pilotes qui ont déjà bénéficié d’une protection d’exécution prenant en charge le cache terminent leurs accès à l’objet partagé.

Syntaxe

void ExWaitForRundownProtectionReleaseCacheAware(
  [in, out] PEX_RUNDOWN_REF_CACHE_AWARE RunRef
);

Paramètres

[in, out] RunRef

Pointeur vers une structure EX_RUNDOWN_REF_CACHE_AWARE initialisée par un appel précédent à ExAllocateCacheAwareRundownProtection ou ExInitializeRundownProtection. Les routines de protection de l’exécution prenant en compte le cache utilisent cette structure pour suivre les status d’exécution de l’objet partagé associé. Cette structure est opaque pour les pilotes.

Valeur de retour

None

Remarques

Cette routine est appelée par le pilote qui possède un objet qui réside dans la mémoire partagée et auquel d’autres pilotes accèdent. Avant de supprimer cet objet, le pilote propriétaire doit appeler cette routine pour attendre que les accès en suspens de l’objet se terminent. Une fois ExWaitForRundownProtectionReleaseCacheAware retourné, le pilote propriétaire peut supprimer l’objet en toute sécurité.

Une fois ExWaitForRundownProtectionReleaseCacheAware appelé, la routine ExAcquireRundownProtectionCacheAware n’accorde aucune autre demande de protection contre l’exécution prenant en charge le cache des pilotes qui tentent d’accéder à l’objet partagé.

La routine attend de revenir jusqu’à ce que tous les pilotes qui ont reçu une protection d’exécution prenant en charge le cache finissent d’accéder à l’objet. À la fin de chaque pilote, il appelle la routine ExReleaseRundownProtectionCacheAware pour libérer la protection d’exécution prise en compte du cache précédemment acquise. Une fois tous les accès en suspens terminés, ExWaitForRundownProtectionReleaseCacheAware retourne et l’objet peut être supprimé en toute sécurité.

Si ExWaitForRundownProtectionReleaseCacheAware est appelé lorsque tous les pilotes auxquels la protection contre l’exécution a été accordée ont déjà terminé d’accéder à l’objet partagé, la routine modifie l’objet status à s’exécuter et retourne immédiatement, sans attendre.

Si ExWaitForRundownProtectionReleaseCacheAware est appelé pour exécuter un objet partagé, mais que le paramètre RunRef indique que cet objet est déjà exécuté, l’appel n’a aucun effet, mais n’est pas traité comme une erreur.

Pour plus d’informations, consultez Protection d’exécution prenant en charge le cache.

Configuration requise

Condition requise Valeur
Serveur minimal pris en charge Windows Server 2003, Service Pack 1
En-tête wdm.h (inclure Wdm.h)
Règles de conformité DDI HwStorPortProhibitedDDIs(storport), SpNoWait(storport)

Voir aussi

ExAcquireRundownProtectionCacheAware

ExAcquireRundownProtectionCacheAwareEx

ExAllocateCacheAwareRundownProtection

ExFreeCacheAwareRundownProtection

ExInitializeRundownProtectionCacheAware

ExReInitializeRundownProtectionCacheAware

ExReleaseRundownProtectionCacheAware

ExReleaseRundownProtectionCacheAwareEx

ExRundownCompletedCacheAware

ExSizeOfRundownProtectionCacheAware