次の方法で共有


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

開くピンを識別するピン ID を指定します。 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 に設定し、その初期位置を 0 に設定します。 ( 「IMiniportWavePciStream::SetState 」および 「IMiniportWavePciStream::GetPosition」を参照してください)。

ストリームのデータ形式を指定する DataFormat パラメーターは、 KSDATAFORMAT 構造体の次のオーディオ固有の拡張バージョンのいずれかを指します。

KSDATAFORMAT_WAVEFORMATEX

KSDATAFORMAT_DSOUND

ミニポート ドライバーがサービス グループ ポインターを提供しない場合 (つまり、呼び出しが ServiceGroup ポインターを介して NULL を出力する場合NewStream)、ポート ドライバーはストリームの位置とクロック イベントを処理する代わりに、独自の定期的なタイマーを設定します。 このタイマーの期間は現在 20 ミリ秒ですが、将来の実装では期間が変更される可能性があります。

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

NewStreamDmaChannel OUT パラメーターを介して出力されるポインターの処理では、通常の参照カウント規則に従わない点に注意してください。 ポート ドライバーは、メソッドの他の OUT パラメーター (StreamServiceGroup) を介してNewStream受け取った参照の使用を完了すると、期待どおりに解放されます。 これに対し、ポート ドライバーは、呼び出しから受け取る DmaChannel ポインターをNewStream使用せず、DmaChannel オブジェクトで Release を呼び出すことはありません。

Microsoft Windows Driver Kit (WDK) の ac97 サンプル オーディオ ドライバーには、この動作が反映されます。 このサンプルの メソッドのIMiniportWavePci::NewStream実装では、DmaChannel 参照ではなく、出力する Stream および ServiceGroup 参照で AddRef を呼び出します。 この動作は、下位互換性のために保持されます。

他の NewStream ポート型 (特に WaveCyclic) のメソッドは、すべての OUT パラメーターの通常の参照カウント規則に従います。

要件

要件
対象プラットフォーム ユニバーサル
Header portcls.h (Portcls.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

IDmaChannel

IMiniportWavePci

IMiniportWavePciStream

IPortWavePciStream

IServiceGroup

KSDATAFORMAT

KSDATAFORMAT_DSOUND

KSDATAFORMAT_WAVEFORMATEX

POOL_TYPE