AcxRtStreamCreate 関数 (acxstreams.h)
AcxRtStreamCreate は、OS がオーディオ データをストリーミングするために使用する ACX RTStream オーディオ ストリームを作成します。
構文
NTSTATUS AcxRtStreamCreate(
WDFDEVICE Device,
ACXCIRCUIT Circuit,
PWDF_OBJECT_ATTRIBUTES Attributes,
PACXSTREAM_INIT *Config,
ACXSTREAM *Stream
);
パラメーター
Device
指定した ACXCIRCUIT とそのストリームに関連付けられている WDFDEVICE オブジェクト (「フレームワーク オブジェクトの概要」で説明)。
Circuit
このストリームが関連付けられる ACXCIRCUIT。
Attributes
さまざまなオブジェクトの値を設定するために使用される WDF_OBJECT_ATTRIBUTES を使用して定義された追加の属性: コールバックのクリーンアップと破棄、コンテキストの種類、および親オブジェクトの指定。
Config
ストリームの初期化パラメーターを定義するACXSTREAM_INIT構造体。 ACX オブジェクトの詳細については、「 ACX - ACX オブジェクトの概要」を参照してください。
Stream
新しい ACXSTREAM オブジェクトへのハンドルを受け取る場所へのポインター。
ACXSTREAM オブジェクトは、回線によって作成されたオーディオ ストリームを表します。 詳細については、「 ACX - ACX オブジェクトの概要」を参照してください。
戻り値
STATUS_SUCCESS
呼び出しが成功した場合は を返します。 それ以外の場合は、適切なエラー コードを返します。 詳細については、「 NTSTATUS 値の使用」を参照してください。
注釈
ACXSTREAM が作成されると、ドライバーは 1 つ以上の ACX 要素をストリームに追加できます。 既定では、ACX 要素はアセンブリの同じ順序で接続されます。 ACXSTREAM は、1 つの ACXCIRCUIT にのみ関連付けられます。 ACX では、非ストリーミング回線で使用される基本的な ACX ストリーム オブジェクトと、ストリーミング回線で使用される ACX RealTime (RT) ストリーム オブジェクトの 2 種類のストリームがサポートされています。
AcxRtStreamCreate によって作成された ACXSTREAM を使用すると、ドライバーはストリームに関連付けられているコントロール シグナルと状態の変更を受信できます。 ACXSTREAM は、OS 間でのオーディオ データのストリーミングもサポートします。 オーディオ データのストリーミングをサポートするドライバーでは、AcxRtStreamCreate を使用して、ストリーミングをサポートする ACXSTREAM を作成する必要があります。
複数のドライバー間で複数の ACXCIRCUIT から作成されたエンドポイントの場合、ストリーミング ピンをホストする ACXCIRCUIT は ACX RT Streamを作成し、エンドポイント内の他の ACXCIRCUIT は RT 以外の ACX ストリームを作成します。
例
Rt ストリームの作成例を次に示します。
//
// Init streaming callbacks.
//
ACX_STREAM_CALLBACKS streamCallbacks;
ACX_STREAM_CALLBACKS_INIT(&streamCallbacks);
streamCallbacks.EvtAcxStreamPrepareHardware = EvtStreamPrepareHardware;
streamCallbacks.EvtAcxStreamReleaseHardware = EvtStreamReleaseHardware;
streamCallbacks.EvtAcxStreamRun = EvtStreamRun;
streamCallbacks.EvtAcxStreamPause = EvtStreamPause;
streamCallbacks.EvtAcxStreamAssignDrmContentId = EvtStreamAssignDrmContentId;
status = AcxStreamInitAssignAcxStreamCallbacks(StreamInit, &streamCallbacks);
//
// Init RT Streaming callbacks.
//
ACX_RT_STREAM_CALLBACKS rtCallbacks;
ACX_RT_STREAM_CALLBACKS_INIT(&rtCallbacks);
rtCallbacks.EvtAcxStreamGetHwLatency = EvtStreamGetHwLatency;
rtCallbacks.EvtAcxStreamAllocateRtPackets = EvtStreamAllocateRtPackets;
rtCallbacks.EvtAcxStreamFreeRtPackets = EvtStreamFreeRtPackets;
rtCallbacks.EvtAcxStreamSetRenderPacket = EvtStreamSetRenderPacket;
rtCallbacks.EvtAcxStreamGetCurrentPacket = EvtStreamGetCurrentPacket;
rtCallbacks.EvtAcxStreamGetPresentationPosition = EvtStreamGetPresentationPosition;
status = AcxStreamInitAssignAcxRtStreamCallbacks(StreamInit, &rtCallbacks);
//
// Create the stream.
//
WDF_OBJECT_ATTRIBUTES attributes;
ACXSTREAM stream;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, STREAM_CONTEXT);
attributes.EvtCleanupCallback = EvtStreamContextCleanup;
attributes.EvtDestroyCallback = EvtStreamDestroy;
status = AcxRtStreamCreate(Device, Circuit, &attributes, &StreamInit, &stream);
ACX の要件
最小 ACX バージョン: 1.0
ACX バージョンの詳細については、「 ACX バージョンの概要」を参照してください。
要件
要件 | 値 |
---|---|
Header | acxstreams.h |
IRQL | PASSIVE_LEVEL |