다음을 통해 공유


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_INTERFACEContext 멤버 또는 HDAUDIO_BUS_INTERFACE_V2 구조체의 컨텍스트 값을 지정합니다.

[in] Handle

DMA 엔진 식별을 처리합니다. 이 핸들 값은 AllocateCaptureDmaEngine 또는 AllocateRenderDmaEngine 이전 호출에서 가져옵니다.

반환 값

FreeDmaBuffer 호출이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 루틴이 적절한 오류 코드를 반환합니다. 다음 표에서는 가능한 반환 상태 코드 중 일부를 보여 줍니다.

반환 코드 묘사
STATUS_UNSUCCESSFUL
호출자가 너무 높은 IRQL에서 실행 중임을 나타냅니다.
STATUS_INVALID_HANDLE
핸들 매개 변수 값이 잘못되었음을 나타냅니다.
STATUS_INVALID_DEVICE_REQUEST
스트림이 다시 설정 상태가 아니거나 DMA 엔진에 현재 할당된 버퍼가 없음을 나타냅니다.

발언

FreeDmaBuffer 루틴은 AllocateDmaBuffer 루틴과 함께 사용됩니다. 이러한 두 루틴은 hd Audio DDI의 HDAUDIO_BUS_INTERFACE 버전에서만 사용할 수 있습니다. 이 DDI에는 AllocateDmaBufferFreeDmaBuffer함께 사용되지 않는 AllocateContiguousDmaBuffer, SetupDmaEngineWithBdlFreeContiguousDmaBuffer 루틴이 포함되지 않습니다. 이전에 할당된 DMA 버퍼를 사용하도록 DMA 엔진을 구성하는 SetupDmaEngineWithBdl달리 AllocateDmaBuffer DMA 버퍼를 할당하고 버퍼를 사용하도록 DMA 엔진을 구성합니다.

루틴이 실패하고 다음 상황 중 하나에서 STATUS_INVALID_DEVICE_REQUEST 오류 코드를 반환합니다.

  • 클라이언트는 현재 DMA 엔진에 할당된 버퍼가 없는 경우 FreeDmaBuffer 호출합니다.
  • 스트림이 다시 설정이 아닌 상태에 있습니다.

요구 사항

요구
대상 플랫폼 바탕 화면
헤더 hdaudio.h(Hdaudio.h 포함)
IRQL PASSIVE_LEVEL

참고 항목

AllocateDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_V2

SetupDmaEngineWithBdl