共用方式為


IMiniportWaveRTStreamNotification::AllocateBufferWithNotification 方法 (portcls.h)

當您想要實作 DMA 驅動事件通知時,AllocateAudioBufferWithNotification 方法會配置音訊數據的循環緩衝區。 如果您不想要事件通知,則必須使用 IMiniportWaveRTStream::AllocateAudioBuffer

語法

NTSTATUS AllocateBufferWithNotification(
  [in]  ULONG               NotificationCount,
  [in]  ULONG               RequestedSize,
  [out] PMDL                *AudioBufferMdl,
  [out] ULONG               *ActualSize,
  [out] ULONG               *OffsetFromFirstPage,
  [out] MEMORY_CACHING_TYPE *CacheType
);

參數

[in] NotificationCount

指定每個緩衝區週期想要的通知數目。 有效值為 1 或 2,其中 1 表示循環緩衝區結尾的單一通知,而 2 表示每個緩衝區週期有兩個通知,一個在緩衝區中間點,一個在結尾。

[in] RequestedSize

指定音訊緩衝區的要求大小,以位元組為單位。

[out] AudioBufferMdl

描述音訊緩衝區的記憶體描述元清單輸出指標(MDL)。 此參數指向呼叫端配置的指標變數,方法會將指標寫入至 MDL。

[out] ActualSize

配置之緩衝區的實際大小輸出指標,以位元組為單位。 此參數會指向方法寫入大小值的ULONG變數。

[out] OffsetFromFirstPage

緩衝區位移(以位元組為單位)的輸出指標,從 MDL 中第一頁的開頭開始。 此參數會指向呼叫端配置的ULONG變數,方法會將位移值寫入其中。

[out] CacheType

指定用戶端要求音訊緩衝區的快取類型。 此參數是 MEMORY_CACHING_TYPE 列舉值

傳回值

如果呼叫成功,AllocateBufferWithNotification 會傳回STATUS_SUCCESS。 否則,方法會傳回適當的錯誤狀態代碼。 下表顯示一些可能的錯誤狀態代碼。

傳回碼 描述
STATUS_UNSUCCESSFUL
驅動程式不支援指定的緩衝區屬性組合。
STATUS_INSUFFICIENT_RESOURCES
記憶體不足,無法配置緩衝區。
STATUS_DEVICE_NOT_READY
裝置尚未就緒。

言論

注意 Intel 高階音訊編解碼器的 Miniports 必須指定 MmWriteCombined 的 CacheType,以確保快取一致性。 這是因為 Intel 高畫質音訊控制器可能設定為非窺探作業。
 
從用戶端收到 KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION 要求之後,埠驅動程式會呼叫 AllocateBufferWithNotification 方法來配置迴圈緩衝區,以供埠驅動程式稍後對應至用戶端的虛擬位址空間。 AllocateBufferWithNotification 的運作方式與 IMiniportWaveRTStream::AllocateAudioBuffer 類似。 此外,AllocateBufferWithNotification 識別 DMA 驅動事件通知所需的 WaveRT 埠驅動程式,並指定需要循環緩衝區每個週期的通知數目。

要求

要求 價值
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows作系統中使用。
目標平臺 普遍
標頭 portcls.h
IRQL 被動層級。

另請參閱

IMiniportWaveRTStream::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL

MEMORY_CACHING_TYPE