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。 否則,此方法會傳回適當的錯誤狀態代碼。 下表顯示一些可能的錯誤狀態代碼。
傳回碼 | Description |
---|---|
|
驅動程式不支援指定的緩衝區屬性組合。 |
|
記憶體不足,無法配置緩衝區。 |
|
裝置未就緒。 |
備註
AllocateBufferWithNotification
方法,以配置埠驅動程式稍後可以對應至用戶端的虛擬位址空間的循環緩衝區。 AllocateBufferWithNotification
運作方式類似於 IMiniportWaveRTStream::AllocateAudioBuffer。 此外, AllocateBufferWithNotification
會識別要有 DMA 驅動事件通知的 WaveRT 埠驅動程式,並指定需要循環緩衝區每個週期的通知數目。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。 |
目標平台 | Universal |
標頭 | portcls.h |
IRQL | 被動層級。 |
另請參閱
IMiniportWaveRTStream::AllocateAudioBuffer
IMiniportWaveRTStreamNotification