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 構造体の次のオーディオ固有の拡張バージョンのいずれかを指します。
ミニポート ドライバーがサービス グループ ポインターを提供しない場合 (つまり、呼び出しが ServiceGroup ポインターを介して NULL を出力する場合NewStream
)、ポート ドライバーはストリームの位置とクロック イベントを処理する代わりに、独自の定期的なタイマーを設定します。 このタイマーの期間は現在 20 ミリ秒ですが、将来の実装では期間が変更される可能性があります。
Stream、OuterUnknown、PortStream、ServiceGroup の各パラメーターは、COM オブジェクトの参照カウント規則に従います。
NewStream
DmaChannel OUT パラメーターを介して出力されるポインターの処理では、通常の参照カウント規則に従わない点に注意してください。 ポート ドライバーは、メソッドの他の OUT パラメーター (Stream と ServiceGroup) を介して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 |