次の方法で共有


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

ルーチンは FreeContiguousDmaBufferAllocateContiguousDmaBuffer の呼び出しによって割り当てられた DMA バッファーおよびバッファー記述子リスト (BDL) を解放します。

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

構文

PFREE_CONTIGUOUS_DMA_BUFFER PfreeContiguousDmaBuffer;

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

パラメーター

[in] _context

HDAUDIO_BUS_INTERFACE_BDL構造体の Context メンバーのコンテキスト値を指定します。

[in] Handle

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

戻り値

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

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

注釈

この FreeContiguousDmaBuffer ルーチンは、 SetupDmaEngineWithBdl ルーチンおよび AllocateContiguousDmaBuffer ルーチンと組み合わせて使用されます。 これら 3 つのルーチンは、HD Audio DDI のHDAUDIO_BUS_INTERFACE_BDL バージョンでのみ使用できます。 この DDI には 、AllocateDmaBuffer ルーチンと FreeDmaBuffer ルーチンは含まれません。 これは AllocateContiguousDmaBufferSetupDmaEngineWithBdl、および と FreeContiguousDmaBuffer組み合わせて使用されることはありません。 以前に割り当てられた DMA バッファーを使用するように DMA エンジンを構成する SetupDmaEngineWithBdl とは異なり、 AllocateDmaBuffer は両方とも DMA バッファーを割り当て、バッファーを使用するように DMA エンジンを構成します。 詳細については、「 2 つの DDI バージョンの違い」を参照してください。

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

  • DMA エンジンにバッファーが現在割り当てられていない場合、クライアントは を呼び出 FreeContiguousDmaBuffer します。
  • ストリームがリセット以外の状態です。

要件

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

こちらもご覧ください

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

FreeDmaBuffer

HDAUDIO_BUS_INTERFACE_BDL

SetupDmaEngineWithBdl