共用方式為


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 驅動程式已發行 之 FirstTagLastTag 範圍中的任何對應。 由於同步處理問題,範圍中的某些對應可能會在埠驅動程式決定要撤銷的對應清單以及呼叫 RevokeMappings之間釋放。 如需詳細資訊,請參閱接下來的<備註>一節。

傳回值

RevokeMappings 如果呼叫成功,則會傳回STATUS_SUCCESS。 否則,方法會傳回適當的錯誤碼。

備註

當下列情況時,埠驅動程式會呼叫 RevokeMappings 來撤銷數據流的對應:

  • I/O 要求 (IRP) 已取消,而且先前對應的記憶體可能無法再使用。
  • 串流狀態會變更為 KSSTATE_STOP (,請參閱 KSSTATE) ,而裝置不再需要對應。
迷你埠驅動程式會追蹤其從 呼叫 IPortWavePciStream::GetMapping 取得其對應的順序。 RevokeMapping方法會撤銷序列中的所有對應,其開頭為 FirstTag 所識別的對應,並以 LastTag 所識別的對應結束。 這包括 FirstTagLastTag 所識別的對應,以及兩者之間的所有對應。 迷你埠驅動程式會從可用的對應清單中移除它,以撤銷每個對應。

方法 RevokeMapping 可用來移除單一對應,方法是將 FirstTagLastTag 設定為相同的值。

埠驅動程式可以在 DMA 控制器的散佈/收集傳輸佇列上,以異步方式呼叫 RevokeMappings 迷你埠驅動程式的維護作業。 此佇列的存取權必須受到同步處理基本類型的保護。 例如,在 Microsoft Windows 驅動程式套件中的 ac97 範例音訊驅動程式 (WDK) 中,這是透過使用 KeAcquireSpinLockKeReleaseSpinLock 呼叫來圍繞重要程式碼區段來完成。 因為迷你埠驅動程式可以異步釋放埠驅動程式呼叫 RevokeMappings的對應,所以迷你埠驅動程式先前可能已發行 (請參閱 IPortWavePciStream::ReleaseMapping) 呼叫中指定的 RevokeMappings 一或多個對應。

如需對應的詳細資訊,請參閱 WavePci 延遲

規格需求

需求
目標平台 Universal
標頭 portcls.h (包括 Portcls.h)
IRQL DISPATCH_LEVEL

另請參閱

IMiniportWavePciStream

IPortWavePciStream::GetMapping

IPortWavePciStream::ReleaseMapping

KSSTATE

KeAcquireSpinLock

KeReleaseSpinLock