共用方式為


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),且裝置不再需要對應。
迷你埠驅動程式會追蹤它從呼叫到 IPortWavePciStream::GetMapping取得其對應的順序。 RevokeMapping 方法會撤銷序列中的所有對應,該對應開頭為 FirstTag 所識別的對應,並以 lastTag 所識別的對應結尾。 這包括 FirstTagLastTag 和之間所有對應所識別的對應。 迷你埠驅動程式會藉由從可用對應清單中移除它來撤銷每個對應。

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

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

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

要求

要求 價值
目標平臺 普遍
標頭 portcls.h (包括 Portcls.h)
IRQL DISPATCH_LEVEL

另請參閱

IMiniportWavePciStream

IPortWavePciStream::GetMapping

IPortWavePciStream::ReleaseMapping

KSSTATE

KeAcquireSpinLock

KeReleaseSpinLock