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 FirstTag 範圍中任何對應,Miniport 驅動程式已發行的 LastTag。 由於同步處理問題,範圍中的某些對應可能會在埠驅動程式決定要撤銷的對應清單,以及呼叫 RevokeMappings
之間釋放。 如需詳細資訊,請參閱下列一節。
傳回值
如果呼叫成功,RevokeMappings
會傳回STATUS_SUCCESS。 否則,方法會傳回適當的錯誤碼。
言論
埠驅動程式會呼叫 RevokeMappings
,以在下列情況下撤銷數據流的對應:
- I/O 要求已取消,且先前對應的記憶體可能無法再使用。
- 串流狀態會變更為 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