PSET_DMA_ENGINE_STATE コールバック関数 (hdaudio.h)
SetDmaEngineState ルーチンは、1 つ以上の DMA エンジンの状態を実行中、停止、一時停止、またはリセット状態に設定します。
SetDmaEngineState ルーチンの関数ポインター型は、次のように定義されます。
構文
PSET_DMA_ENGINE_STATE PsetDmaEngineState;
NTSTATUS PsetDmaEngineState(
[in] PVOID _context,
[in] HDAUDIO_STREAM_STATE StreamState,
[in] ULONG NumberOfHandles,
[in] PHANDLE Handles
)
{...}
パラメーター
[in] _context
HDAUDIO_BUS_INTERFACE、HDAUDIO_BUS_INTERFACE_V2、または HDAUDIO_BUS_INTERFACE_BDL 構造体の Context メンバーのコンテキスト値を指定します。
[in] StreamState
新しいストリームの状態を指定します。 このパラメーターを、次のいずれかのHDAUDIO_STREAM_STATE列挙値に設定します。
- PauseState (一時停止)
- ResetState (reset)
- RunState (実行中)
- StopState (停止)
[in] NumberOfHandles
handles 配列内のハンドルの数を指定します。 このパラメーターを 0 以外の値に設定します。
[in] Handles
DMA エンジンへのハンドルの配列へのポインター。 このパラメーターに NULL 以外の値を指定します。
戻り値
呼び出しが DMA エンジンの状態の変更に成功した場合、SetDmaEngineState はSTATUS_SUCCESSを返します。 それ以外の場合、ルーチンは適切なエラー コードを返します。 次の表は、可能な戻り状態コードの一部を示しています。
リターン コード | 説明 |
---|---|
|
いずれかのハンドルが無効であることを示します。 |
|
いずれかのパラメーター値が正しくない (無効なパラメーター値または不適切なポインター) ことを示します。 |
|
DMA エンジンの 1 つに現在バッファーが割り当てられていないことを示します。 |
注釈
このルーチンは、1 つ以上の DMA エンジンの状態を streamState パラメーターが指定した状態に変更します。 ルーチンは、 ハンドル 配列内のハンドルが識別するすべての DMA エンジンの状態遷移を同期します。 詳細については、「 2 つ以上のストリームの同期」を参照してください。
このルーチンを呼び出す前に、 ハンドル 配列で各 DMA エンジンを設定します。
- HD Audio DDI のHDAUDIO_BUS_INTERFACE バージョンを使用している場合は、 AllocateDmaBuffer を呼び出して DMA エンジンを設定します。
- HDAUDIO_BUS_INTERFACE_BDL バージョンの DDI を使用している場合は、 SetupDmaEngineWithBdl を呼び出して DMA エンジンを設定します。
ストリームの状態は、実行中とリセットの間で直接遷移することはできません。 代わりに、ストリームは最初に一時停止または停止の中間状態を通過する必要があります。
- [実行中] または [リセット] 状態から、ストリームの状態を [一時停止] または [停止済み] に直接変更できます。
- 一時停止状態または停止状態から、ストリームの状態は [実行中] または [リセット] に直接変更できます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | hdaudio.h (Hdaudio.h を含む) |
IRQL | <=DISPATCH_LEVEL |