IPortWavePciStream ::ReleaseMapping, méthode (portcls.h)
La méthode ReleaseMapping
libère un mappage obtenu par un appel précédent à IPortWavePciStream ::GetMapping.
Syntaxe
NTSTATUS ReleaseMapping(
[in] PVOID Tag
);
Paramètres
[in] Tag
Spécifie une valeur d’étiquette identifiant le mappage à libérer. Pour plus d’informations, consultez la section Remarques suivante.
Valeur de retour
ReleaseMapping
retourne STATUS_SUCCESS si l’appel a réussi. Sinon, la méthode retourne un code d’erreur approprié.
Remarques
Définissez le paramètre balise sur la même valeur de balise que celle que vous avez utilisée pour identifier le mappage dans l’appel à IPortWavePciStream ::GetMapping qui a obtenu le mappage à l’origine.
Le pilote miniport doit suivre l’ordre dans lequel il acquiert ses mappages à partir d’appels à IPortWavePciStream ::GetMapping, et il doit libérer les mappages dans le même ordre.
Pour éviter les interblocages potentiels, le pilote miniport doit éviter de tenir un verrou de rotation pendant son appel à ReleaseMapping
. Consultez l’exemple de pilote audio ac97 dans le Kit de pilotes Microsoft Windows (WDK) pour obtenir un exemple de code qui utilise un verrou de rotation pour sérialiser les accès aux structures de données partagées et aux périphériques dans un système multiprocesseur. L’exemple de code appelle KeReleaseSpinLock avant d’appeler ReleaseMapping
et appelle KeAcquireSpinLock après avoir appelé ReleaseMapping
. Entre les appels à libérer et acquérir le verrou de rotation, le thread de pilote ne doit pas supposer qu’il dispose d’un accès exclusif aux données ou périphériques qui sont gardés par le verrou de rotation. L’outil Vérificateur de pilotes (voir la description de cet outil sur le site web du vérificateur de pilotes) vérifie les verrous de rotation actifs pendant les appels à ReleaseMapping
; s’il en détecte un, il génère une vérification des bogues 0xC4 (détection de blocage).
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | portcls.h (include Portcls.h) |
IRQL | <=DISPATCH_LEVEL |
Voir aussi
IMiniportWavePciStream ::RevokeMappings