PFREE_DMA_BUFFER コールバック関数 (hdaudio.h)
ルーチンは FreeDmaBuffer
、 AllocateDmaBuffer の呼び出しによって以前に割り当てられた DMA バッファーを解放します。
ルーチンの関数ポインター型 FreeDmaBuffer
は、次のように定義されます。
構文
PFREE_DMA_BUFFER PfreeDmaBuffer;
NTSTATUS PfreeDmaBuffer(
[in] PVOID _context,
[in] HANDLE Handle
)
{...}
パラメーター
[in] _context
HDAUDIO_BUS_INTERFACEまたはHDAUDIO_BUS_INTERFACE_V2構造体の Context メンバーからコンテキスト値を指定します。
[in] Handle
DMA エンジンの識別を処理します。 このハンドル値は、 AllocateCaptureDmaEngine または AllocateRenderDmaEngine の以前の呼び出しから取得されました。
戻り値
FreeDmaBuffer
は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、ルーチンは適切なエラー コードを返します。 次の表は、考えられる戻り状態コードの一部を示しています。
リターン コード | 説明 |
---|---|
|
呼び出し元が高すぎる IRQL で実行されていることを示します。 |
|
ハンドル パラメーターの値が無効であることを示します。 |
|
ストリームがリセット状態ではないこと、または DMA エンジンに現在バッファーが割り当てられていないことを示します。 |
注釈
ルーチンは FreeDmaBuffer
AllocateDmaBuffer ルーチンと組み合わせて使用されます。 これら 2 つのルーチンは、HD Audio DDI のHDAUDIO_BUS_INTERFACEバージョンでのみ使用できます。 この DDI には 、AllocateContiguousDmaBuffer、 SetupDmaEngineWithBdl、 および FreeContiguousDmaBuffer ルーチンは含まれません。 これは AllocateDmaBuffer および FreeDmaBuffer
と組み合わせて使用されることはありません。 以前に割り当てられた DMA バッファーを使用するように DMA エンジンを構成する SetupDmaEngineWithBdl とは異なり、 AllocateDmaBuffer はどちらも DMA バッファーを割り当て、バッファーを使用するように DMA エンジンを構成します。
ルーチンは失敗し、次のいずれかの状況でSTATUS_INVALID_DEVICE_REQUESTエラー コードを返します。
-
クライアントは、DMA エンジンにバッファーが現在割り当てられていない場合に を呼び出します
FreeDmaBuffer
。 - ストリームがリセット以外の状態です。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | hdaudio.h (Hdaudio.h を含む) |
IRQL | PASSIVE_LEVEL |