次の方法で共有


PFREE_DMA_ENGINE コールバック関数 (hdaudio.h)

ルーチンは FreeDmaEngineAllocateCaptureDmaEngine または AllocateRenderDmaEngine の呼び出しによって以前に割 り当てられた DMA エンジンを解放します。

ルーチンの関数ポインター型 FreeDmaEngine は、次のように定義されます。

構文

PFREE_DMA_ENGINE PfreeDmaEngine;

NTSTATUS PfreeDmaEngine(
  [in] PVOID _context,
  [in] HANDLE Handle
)
{...}

パラメーター

[in] _context

HDAUDIO_BUS_INTERFACE、HDAUDIO_BUS_INTERFACE_V2、または HDAUDIO_BUS_INTERFACE_BDL 構造体Context メンバーのコンテキスト値指定します。

[in] Handle

DMA エンジンを識別するハンドル。 このハンドル値は、 AllocateCaptureDmaEngine または AllocateRenderDmaEngine の以前の呼び出しから取得されました。

戻り値

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

リターン コード 説明
STATUS_INVALID_HANDLE
ハンドル パラメーターの値が無効であることを示します。
STATUS_INVALID_DEVICE_REQUEST
ストリームがリセット状態ではないこと、または DMA エンジンにバッファーがまだ割り当てられていることを示します。

注釈

このルーチンは、 AllocateCaptureDmaEngine または AllocateRenderDmaEngine ルーチンの呼び出しによって以前に予約されていた DMA エンジン 解放します。

このルーチンは失敗し、次のいずれかの状況でSTATUS_INVALID_DEVICE_REQUESTエラー コードを返します。

  • 以前に割り当てられた DMA バッファーが解放されていません ( FreeDmaBuffer または FreeContiguousDmaBuffer を呼び出すことによって)。
  • ストリームがリセット以外の状態です。
オーディオ ドライバーは、ピンを閉じる (およびストリームを破棄する) には、このルーチンを呼び出します。

要件

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

こちらもご覧ください

AllocateCaptureDmaEngine

AllocateRenderDmaEngine

FreeContiguousDmaBuffer

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2