IMiniportWavePci::NewStream 方法 (portcls.h)
NewStream
方法會建立與指定實體通道相關聯的邏輯數據流的新實例。
語法
NTSTATUS NewStream(
[out] PMINIPORTWAVEPCISTREAM *Stream,
[in, optional] PUNKNOWN OuterUnknown,
[in] POOL_TYPE PoolType,
[in] PPORTWAVEPCISTREAM PortStream,
[in] ULONG Pin,
[in] BOOLEAN Capture,
[in] PKSDATAFORMAT DataFormat,
[out] PDMACHANNEL *DmaChannel,
[out] PSERVICEGROUP *ServiceGroup
);
參數
[out] Stream
新數據流的輸出指標。 此參數指向呼叫端配置的指標變數,方法會將指標寫入數據流物件的 IMiniportWavePciStream 介面。 呼叫端會指定此參數的有效非NULL 指標。
[in, optional] OuterUnknown
需要匯總數據流物件的 IUnknown 介面指標。 這個參數是選擇性的。 如果不需要匯總,呼叫端會將此參數指定為 null 。
[in] PoolType
指定應該從中配置 DMA 通道物件的記憶體的記憶體的記憶體集區類型。 此參數將是 POOL_TYPE 列舉中定義的其中一個非分頁集區類型。
[in] PortStream
埠驅動程序數據流物件的 IPortWavePciStream 介面指標。
[in] Pin
指定要開啟之針腳的針腳標識碼。 如果 WavePci 迷你埠驅動程式的篩選描述元在篩選上指定 n 個 針腳處理站,則參數 Pin 的有效值介於 0 到 n-1 之間。
[in] Capture
指定建立擷取數據流或轉譯數據流。 這個參數是擷取 (輸入) 通道的 TRUE ,而播放 (輸出) 通道 FALSE。
[in] DataFormat
指定數據流數據格式之 KSDATAFORMAT 結構的指標。
[out] DmaChannel
DMA 通道的輸出指標。 此參數指向呼叫端配置的指標變數,方法會將指標寫入數據流的 IDmaChannel 物件。 呼叫端會指定此參數的有效非NULL 指標。
[out] ServiceGroup
服務群組的輸出指標。 此參數指向呼叫端配置的指標變數,方法會將指標寫入數據流服務群組物件的 IServiceGroup 介面。 這是正在註冊以接收中斷通知的服務群組。 呼叫端會指定此參數的有效非NULL 指標。
傳回值
如果呼叫成功,NewStream
會傳回STATUS_SUCCESS。 否則,方法會傳回適當的錯誤碼。
言論
NewStream
方法會將數據流的初始狀態設定為 KSSTATE_STOP,並將其初始位置設定為零。 (請參閱 IMiniportWavePciStream::SetState 和 IMiniportWavePciStream::GetPosition。
DataFormat 參數,指定數據流的數據格式,指向下列其中一個音訊特定擴充版本的 KSDATAFORMAT 結構:
如果迷你埠驅動程式不提供服務群組指標(也就是說,如果 NewStream
呼叫輸出 NULL 透過 ServiceGroup 指標),埠驅動程式會改為設定自己的定期定時器來處理數據流位置和時鐘事件。 此定時器的期間目前為 20 毫秒,但未來實作中的期間可能會變更。
Stream、OuterUnknown、PortStream和 ServiceGroup 參數遵循 COM 物件的 參考計數慣例。
請注意,NewStream
在處理透過 DmaChannel OUT 參數輸出的指標時,不會遵循一般參考計數慣例。 當埠驅動程式使用它透過 NewStream
方法的其他 OUT 參數所接收的參考完成時,Stream 和 ServiceGroup,它會如預期般釋放它們。 相反地,埠驅動程序永遠不會使用從 NewStream
呼叫接收的 DmaChannel 指標,而且永遠不會在 DmaChannel 物件上呼叫 Release。
Microsoft Windows 驅動程式套件 (WDK) 中的 ac97 範例音訊驅動程式會反映此行為。 這個範例的 IMiniportWavePci::NewStream
方法實作會在 Stream 上呼叫 addRef ,ServiceGroup 參考它所輸出,但不會 DmaChannel 參考。 為了回溯相容性,會保留此行為。
請注意,其他埠類型的 NewStream
方法(特別是 WaveCyclic)遵循其所有 OUT 參數的一般參考計數慣例。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | portcls.h (包括 Portcls.h) |
IRQL | PASSIVE_LEVEL |