IMiniportDMus::NewStream 方法 (dmusicks.h)

方法 NewStream 會建立與指定實體通道相關聯之邏輯數據流的新實例。

語法

NTSTATUS NewStream(
  [out]          PMXF             *MXF,
  [in, optional] PUNKNOWN         OuterUnknown,
  [in]           POOL_TYPE        PoolType,
  [in]           ULONG            PinID,
  [in]           DMUS_STREAM_TYPE StreamType,
  [in]           PKSDATAFORMAT    DataFormat,
  [out]          PSERVICEGROUP    *ServiceGroup,
  [in]           PAllocatorMXF    AllocatorMXF,
  [in]           PMASTERCLOCK     MasterClock,
  [out]          PULONGLONG       SchedulePreFetch
);

參數

[out] MXF

新數據流的輸出指標。 此參數指向呼叫端配置的指標變數,此方法會將指標寫入至數據流物件的 IMXF 介面。

[in, optional] OuterUnknown

需要匯總數據流物件的 物件之 IUnknown 介面的指標。 這是選擇性參數。 如果不需要匯總,呼叫端會將此參數指定為 NULL

[in] PoolType

指定應該從中配置 DMA 通道物件的記憶體的記憶體的記憶體集區類型。 此參數設定為其中一個 POOL_TYPE 列舉值。

[in] PinID

指定針腳標識碼。 此參數會識別要開啟的針腳。 如果 DMus 迷你埠驅動程式的 IMiniport::GetDescription 方法輸出篩選描述項,以指定篩選上 n 個針腳處理站的總數,則有效的針腳標識符會位於範圍 0 到 n-1

[in] StreamType

指定要建立的數據流類型。 此參數設定為下列其中一個DMUS_STREAM_TYPE列舉值:

DMUS_STREAM_MIDI_RENDER

指定 MIDI 輸出 (播放) 資料流。

DMUS_STREAM_MIDI_CAPTURE

指定MIDI輸入數據流。

DMUS_STREAM_WAVE_SINK

指定波浪輸出數據流。

如需詳細資訊,請參閱接下來的<備註>一節。

[in] DataFormat

核心串流 KSDATAFORMAT 結構的指標,指定要用於這個實例的數據格式

[out] ServiceGroup

服務群組的輸出指標。 此參數指向呼叫端配置的指標變數,此方法會將指標寫入數據流服務群組物件的 IServiceGroup 介面。 這是正在註冊以進行中斷通知的服務群組。

[in] AllocatorMXF

IAllocatorMXF 物件的指標。 這是埠驅動程式的記憶體配置器,這是回收 DMUS_KERNEL_EVENT 結構所需的記憶體配置器。

[in] MasterClock

IMasterClock 物件的指標。 這個主時鐘會將 KS 時鐘的包裝函式傳遞至迷你埠驅動程式。 需要主時鐘指標才能同步至參考時間。

[out] SchedulePreFetch

排程預先擷取時間的輸出指標。 此參數是呼叫端配置 ULONGLONG 變數的指標,此方法會寫入時間值,以指定查詢事件的遠距離。 時間是以 100 奈秒為單位來指定。 埠驅動程序負責排序超過迷你埠驅動程式在此處指定之時間量的任何事件。

傳回值

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

備註

請注意,埠驅動程式會透過 pAllocatorMXF 參數建立方法輸入的 IAllocatorMXF 物件,但迷你埠驅動程式會建立 IMXF 物件NewStream,該方法會透過 ppMXF 參數輸出。 如需 IMXFIAllocatorMXF 的詳細資訊,請參閱 MIDI 傳輸

方法 StreamType 參數的意義IMiniportDMus::NewStream類似於 IMiniportMidi::NewStream 方法的 Capture 参數:

  • 在MIDI針腳上建立數據流時,IMiniportMidi::NewStream 方法的 Capture 參數會指出針腳是要作為 MIDI 轉譯數據流的接收, ( = 取FALSE) 或作為 MIDI 擷取數據流的來源, (擷取 = TRUE) 。
  • 同樣地,在MIDI或 DirectMusic 針腳上建立數據流時, IMiniportDMus::NewStream 方法的 StreamType 參數可以指出針腳是要作為MIDI轉譯數據流的接收, (StreamType = DMUS_STREAM_MIDI_RENDER) 或作为 MIDI 擷取數據流的來源, (StreamType = DMUS_STREAM_MIDI_CAPTURE) 。
不過,DirectMusic 篩選上的針腳可以支援MIDI篩選器無法使用的第三個選項。 針腳可作為 wave 輸出數據流的來源, (StreamType = DMUS_STREAM_WAVE_SINK) 。 DMus 埠驅動程式會實作此數據流的波浪接收。 建立波浪輸出數據流之後,DMus 埠驅動程式會查詢數據流物件, (埠驅動程式透過 IMiniportDMus::NewStream 方法的 ppMXF 輸出參數) 取得其 ISynthSinkDMus 介面。 埠驅動程式的波浪接收會在此介面上呼叫 Render 方法,以從軟體合成器提取波浪數據。 如需詳細資訊,請參閱 Kernel-Mode 軟體合成器的波接收

ppMXFpOuterUnknownppServiceGrouppAllocatorMXFpMasterClock 參數會遵循 COM 對象的參考計數慣例

規格需求

需求
目標平台 桌面
標頭 dmusicks.h (包含 Dmusicks.h)
IRQL PASSIVE_LEVEL

另請參閱

DMUS_KERNEL_EVENT

IAllocatorMXF

IMXF

IMasterClock

IMiniport::GetDescription

IMiniportDMus

IMiniportMidi::NewStream

IServiceGroup

ISynthSinkDMus

KSDATAFORMAT

POOL_TYPE