IPortWavePciStream::ReleaseMapping 方法 (portcls.h)

方法 ReleaseMapping 释放以前调用 IPortWavePciStream::GetMapping 获取的映射。

语法

NTSTATUS ReleaseMapping(
  [in] PVOID Tag
);

参数

[in] Tag

指定一个标记值,该值标识要释放的映射。 有关更多信息,请参见下面的“备注”部分。

返回值

ReleaseMapping 如果调用成功,则返回STATUS_SUCCESS。 否则,该方法将返回相应的错误代码。

注解

Tag 参数设置为最初获取映射的 IPortWavePciStream::GetMapping 调用中用于标识映射的相同标记值。

微型端口驱动程序必须跟踪它从调用 IPortWavePciStream::GetMapping 获取其映射的顺序,并且必须按相同的顺序释放映射。

若要避免潜在的死锁,微型端口驱动程序必须在调用 ReleaseMapping期间避免持有旋转锁。 有关使用旋转锁序列化对多处理器系统中共享数据结构和外围设备的访问的代码示例,请参阅 Microsoft Windows 驱动程序工具包 (WDK) 中的 ac97 示例音频驱动程序。 示例代码在调用 之前调用 KeReleaseSpinLock,并在调用 ReleaseMappingReleaseMapping调用 KeAcquireSpinLock。 在调用释放和获取旋转锁之间,驱动程序线程不得假定它具有对由旋转锁保护的数据或外围设备的独占访问权限。 驱动程序验证程序工具 (驱动程序验证程序网站上查看此工具的说明,) 在调用ReleaseMapping期间检查活动旋转锁;如果检测到一个,它将生成0xC4 (死锁检测) bug 检查。

要求

要求
目标平台 通用
标头 portcls.h (包括 Portcls.h)
IRQL <=DISPATCH_LEVEL

另请参阅

IMiniportWavePciStream::RevokeMappings

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock