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 示例音频驱动程序。 示例代码在调用 ReleaseMapping 之前调用 KeReleaseSpinLock,并在调用 ReleaseMapping后调用 KeAcquireSpinLock。 在调用释放和获取旋转锁之间,驱动程序线程不得假定它对旋转锁保护的数据或外围设备具有独占访问权限。 驱动程序验证程序工具(请参阅 驱动程序验证程序 网站中此工具的说明)在调用 ReleaseMapping期间检查活动旋转锁;如果检测到一个,则会生成0xC4(死锁检测)bug 检查。

要求

要求 价值
目标平台 普遍
标头 portcls.h (包括 Portcls.h)
IRQL <=DISPATCH_LEVEL

另请参阅

IMiniportWavePciStream::RevokeMappings

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock