次の方法で共有


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

ピン ID を指定します。 このパラメーターは、開くピンを識別します。 DMus ミニポート ドライバーの IMiniport::GetDescription メソッドがフィルター上の n 個のピン ファクトリの合計を指定するフィルター記述子を出力する場合、有効なピン ID の範囲は 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 パラメーターを介して入力する NewStreamIAllocatorMXF オブジェクトを作成しますが、ミニポート ドライバーは、メソッドが ppMXF パラメーターを介して出力する IMXF オブジェクトを作成します。 IMXFIAllocatorMXF の詳細については、「MIDI トランスポート」を参照してください。

メソッドの StreamType パラメーターのIMiniportDMus::NewStream意味は、IMiniportMidi::NewStream メソッドの Capture パラメーターの意味と似ています。

  • MIDI ピンでストリームを作成する場合、 IMiniport Midi::NewStream メソッドの Capture パラメーターは、ピンが MIDI レンダー ストリームのシンクとして機能するか ( = キャプチャ FALSE)、または MIDI キャプチャ ストリームのソース (Capture = TRUE) として機能するかを示します。
  • 同様に、MIDI または DirectMusic ピンでストリームを作成する場合、メソッドの StreamType パラメーターは、IMiniportDMus::NewStreamピンが MIDI レンダー ストリームのシンクとして機能するか (StreamType = DMUS_STREAM_MIDI_RENDER)、または MIDI キャプチャ ストリームのソース (StreamType = DMUS_STREAM_MIDI_CAPTURE) として機能するかを示すことができます。
ただし、DirectMusic フィルターのピンでは、MIDI フィルターでは使用できない 3 番目のオプションをサポートできます。 ピンは、ウェーブ出力ストリームのソースとして機能できます (StreamType = DMUS_STREAM_WAVE_SINK)。 DMus ポート ドライバーは、このストリームのウェーブ シンクを実装します。 ウェーブ出力ストリームを作成した後、DMus ポート ドライバーは、ストリーム オブジェクト (ポート ドライバーがメソッドの ppMXF 出力パラメーターを介してIMiniportDMus::NewStream取得) の ISynthSinkDMus インターフェイスを照会します。 ポート ドライバーのウェーブ シンクは、ソフトウェア シンセサイザーからウェーブ データをプルするには、このインターフェイスで Render メソッドを呼び出します。 詳細については、「 Kernel-Mode ソフトウェア シンセサイザーのウェーブ シンク」を参照してください。

ppMXFpOuterUnknownppServiceGrouppAllocatorMXFおよび pMasterClock パラメーターは、COM オブジェクトの参照カウント規則に従います。

要件

要件
対象プラットフォーム デスクトップ
Header dmusicks.h (Dmusicks.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

DMUS_KERNEL_EVENT

IAllocatorMXF

IMXF

IMasterClock

IMiniport::GetDescription

IMiniportDMus

IMiniportMidi::NewStream

IServiceGroup

ISynthSinkDMus

KSDATAFORMAT

POOL_TYPE