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 變數,方法會寫入呼叫實際撤銷的對應數目。 此數位會排除 Miniport 驅動程式已發行 之 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 驅動程式套件中的 ac97 範例音訊驅動程式 (WDK) 中,這是透過使用 KeAcquireSpinLock 和 KeReleaseSpinLock 呼叫來圍繞重要程式碼區段來完成。 因為迷你埠驅動程式可以異步釋放埠驅動程式呼叫 RevokeMappings
的對應,所以迷你埠驅動程式先前可能已發行 (請參閱 IPortWavePciStream::ReleaseMapping) 呼叫中指定的 RevokeMappings
一或多個對應。
如需對應的詳細資訊,請參閱 WavePci 延遲。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | portcls.h (包括 Portcls.h) |
IRQL | DISPATCH_LEVEL |
另請參閱
IPortWavePciStream::GetMapping