IMiniportWavePciStream::RevokeMappings 方法 (portcls.h)
方法 RevokeMappings
撤销以前通过 IPortWavePciStream::GetMapping 获取的映射。
语法
NTSTATUS RevokeMappings(
[in] PVOID FirstTag,
[in] PVOID LastTag,
[out] PULONG MappingsRevoked
);
参数
[in] FirstTag
指定标识要撤消的第一个映射的标记值。
[in] LastTag
指定标记值,该值标识要撤消的最后一个映射。
[out] MappingsRevoked
已撤销映射计数的输出指针。 此参数指向一个 ULONG 变量,方法在其中写入调用实际撤消的映射数。 此数字不包括微型端口驱动程序已发布的范围 FirstTag 到 LastTag 中的任何映射。 由于同步问题,在端口驱动程序确定要撤消的映射列表和对 的调用 RevokeMappings
之间,可能会释放该范围内的某些映射。 有关更多信息,请参见下面的“备注”部分。
返回值
RevokeMappings
如果调用成功,则返回STATUS_SUCCESS。 否则,该方法将返回相应的错误代码。
注解
在以下情况下,端口驱动程序调用 RevokeMappings
以撤消流的映射:
- I/O 请求 (IRP) 被取消,以前映射的内存可能不再可用。
- 流状态更改为KSSTATE_STOP (请参阅 KSSTATE) ,并且设备不再需要映射。
RevokeMapping
撤消序列中的所有映射,该映射以 FirstTag 标识的映射开始,以 LastTag 标识的映射结束。 这包括 FirstTag 和 LastTag 标识的映射以及两者之间的所有映射。 微型端口驱动程序通过将每个映射从可用映射列表中删除来撤消每个映射。
方法 RevokeMapping
可用于通过将 FirstTag 和 LastTag 设置为相同的值来删除单个映射。
端口驱动程序可以针对 DMA 控制器的散点/收集传输队列上的微型端口驱动程序的维护操作异步调用 RevokeMappings
。 对此队列的访问需要由同步基元保护。 例如,在 Microsoft Windows 驱动程序工具包 (WDK) 的 ac97 示例音频驱动程序中,这是通过使用 KeAcquireSpinLock 和 KeReleaseSpinLock 调用围绕关键代码部分来完成的。 由于微型端口驱动程序可以异步发布与端口驱动程序对 RevokeMappings
的调用相关的映射,因此微型端口驱动程序可能以前已发布 (请参阅 IPortWavePciStream::ReleaseMapping) 调用中指定的 RevokeMappings
一个或多个映射。
有关映射的详细信息,请参阅 WavePci 延迟。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | portcls.h (包括 Portcls.h) |
IRQL | DISPATCH_LEVEL |
另请参阅
IPortWavePciStream::GetMapping