Share via


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_INTERFACEHDAUDIO_BUS_INTERFACE_V2、または HDAUDIO_BUS_INTERFACE_BDL 構造体の Context メンバーのコンテキスト指定します。

[in] StreamState

新しいストリームの状態を指定します。 このパラメーターを、次のいずれかのHDAUDIO_STREAM_STATE列挙値に設定します。

  • PauseState (一時停止)
  • ResetState (reset)
  • RunState (実行中)
  • StopState (停止)
現在の実装では、 PauseStateStopState は同じハードウェア状態を表します。

[in] NumberOfHandles

handles 配列内のハンドルの数を指定します。 このパラメーターを 0 以外の値に設定します。

[in] Handles

DMA エンジンへのハンドルの配列へのポインター。 このパラメーターに NULL 以外の値を指定します。

戻り値

呼び出しが DMA エンジンの状態の変更に成功した場合、SetDmaEngineState はSTATUS_SUCCESSを返します。 それ以外の場合、ルーチンは適切なエラー コードを返します。 次の表は、可能な戻り状態コードの一部を示しています。

リターン コード 説明
STATUS_INVALID_HANDLE
いずれかのハンドルが無効であることを示します。
STATUS_INVALID_PARAMETER
いずれかのパラメーター値が正しくない (無効なパラメーター値または不適切なポインター) ことを示します。
STATUS_INVALID_DEVICE_REQUEST
DMA エンジンの 1 つに現在バッファーが割り当てられていないことを示します。

注釈

このルーチンは、1 つ以上の DMA エンジンの状態を streamState パラメーターが指定した状態に変更します。 ルーチンは、 ハンドル 配列内のハンドルが識別するすべての DMA エンジンの状態遷移を同期します。 詳細については、「 2 つ以上のストリームの同期」を参照してください。

このルーチンを呼び出す前に、 ハンドル 配列で各 DMA エンジンを設定します。

  • HD Audio DDI のHDAUDIO_BUS_INTERFACE バージョンを使用している場合は、 AllocateDmaBuffer を呼び出して DMA エンジンを設定します。
  • HDAUDIO_BUS_INTERFACE_BDL バージョンの DDI を使用している場合は、 SetupDmaEngineWithBdl を呼び出して DMA エンジンを設定します。
現在、ハンドル配列内の DMA エンジンに DMA バッファーが割り当てられていない場合、ストリームを Reset 以外の状態に変更しようとすると、SetDmaEngineState 呼び出しが失敗し、エラー コード STATUS_INVALID_DEVICE_REQUESTが返されます。

ストリームの状態は、実行中とリセットの間で直接遷移することはできません。 代わりに、ストリームは最初に一時停止または停止の中間状態を通過する必要があります。

  • [実行中] または [リセット] 状態から、ストリームの状態を [一時停止] または [停止済み] に直接変更できます。
  • 一時停止状態または停止状態から、ストリームの状態は [実行中] または [リセット] に直接変更できます。
WDM オーディオ ドライバーは 、SetState メソッドの呼び出し中にこのルーチンを呼び出します。 たとえば、「 IMiniportWaveCyclicStream::SetState」を参照してください

要件

要件
対象プラットフォーム デスクトップ
Header hdaudio.h (Hdaudio.h を含む)
IRQL <=DISPATCH_LEVEL

こちらもご覧ください

AllocateDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2

IMiniportWaveCyclicStream::SetState

SetupDmaEngineWithBdl