Partager via


Méthode IPortWavePciStream ::ReleaseMapping (portcls.h)

La ReleaseMapping méthode 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 Notes qui suit.

Valeur retournée

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 Tag 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 des appels à IPortWavePciStream ::GetMapping, et il doit libérer les mappages dans le même ordre.

Pour éviter les blocages potentiels, le pilote miniport doit éviter de tenir un verrou de rotation pendant son appel à ReleaseMapping. Consultez l’exemple de pilote audio ac97 dans microsoft Windows Driver Kit (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 l’appel ReleaseMappingde . 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 aux périphériques qui sont gardés par le verrou de rotation. L’outil Driver Verifier (voir la description de cet outil sur le site web Driver Verifier) recherche les verrous de rotation actifs pendant les appels à ReleaseMapping; s’il en détecte un, il génère un bogue 0xC4 (détection d’interblocage) case activée.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête portcls.h (include Portcls.h)
IRQL <=DISPATCH_LEVEL

Voir aussi

IMiniportWavePciStream ::RevokeMappings

IPortWavePciStream

IPortWavePciStream ::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock