IPortWavePciStream::ReleaseMapping method (portcls.h)

The ReleaseMapping method releases a mapping that was obtained by a previous call to IPortWavePciStream::GetMapping.

Syntax

NTSTATUS ReleaseMapping(
  [in] PVOID Tag
);

Parameters

[in] Tag

Specifies a tag value identifying the mapping that is to be released. For more information, see the following Remarks section.

Return value

ReleaseMapping returns STATUS_SUCCESS if the call was successful. Otherwise, the method returns an appropriate error code.

Remarks

Set the Tag parameter to the same tag value that you used to identify the mapping in the call to IPortWavePciStream::GetMapping that originally obtained the mapping.

The miniport driver must keep track of the order in which it acquires its mappings from calls to IPortWavePciStream::GetMapping, and it must release the mappings in the same order.

To avoid potential deadlocks, the miniport driver must avoid holding a spin lock during its call to ReleaseMapping. See the ac97 sample audio driver in the Microsoft Windows Driver Kit (WDK) for a code example that uses a spin lock to serialize accesses to shared data structures and peripherals in a multiprocessor system. The sample code calls KeReleaseSpinLock before calling ReleaseMapping and calls KeAcquireSpinLock after calling ReleaseMapping. Between the calls to release and acquire the spin lock, the driver thread must not assume that it has exclusive access to the data or peripherals that are guarded by the spin lock. The Driver Verifier tool (see the description of this tool at the Driver Verifier website) checks for active spin locks during calls to ReleaseMapping; if it detects one, it generates a 0xC4 (deadlock detection) bug check.

Requirements

Requirement Value
Target Platform Universal
Header portcls.h (include Portcls.h)
IRQL <=DISPATCH_LEVEL

See also

IMiniportWavePciStream::RevokeMappings

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock