다음을 통해 공유


콜백 함수 PFREE_CONTIGUOUS_DMA_BUFFER(hdaudio.h)

FreeContiguousDmaBuffer 루틴은 AllocateContiguousDmaBuffer호출에 의해 할당된 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 루틴은 SetupDmaEngineWithBdlAllocateContiguousDmaBuffer 루틴과 함께 사용됩니다. 이러한 세 가지 루틴은 hd Audio DDI의 HDAUDIO_BUS_INTERFACE_BDL 버전에서만 사용할 수 있습니다. 이 DDI에는 AllocateDmaBufferFreeDmaBuffer 루틴이 포함되지 않습니다. 이 루틴은 AllocateContiguousDmaBuffer, SetupDmaEngineWithBdlFreeContiguousDmaBuffer함께 사용되지 않습니다. 이전에 할당된 DMA 버퍼를 사용하도록 DMA 엔진을 구성하는 SetupDmaEngineWithBdl달리 AllocateDmaBuffer DMA 버퍼를 할당하고 버퍼를 사용하도록 DMA 엔진을 구성합니다. 자세한 내용은 두 DDI 버전 간의차이점을 참조하세요.

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

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

요구 사항

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

참고 항목

AllocateCaptureDmaEngine

AllocateContiguousDmaBuffer

AllocateDmaBuffer

AllocateRenderDmaEngine

freeDmaBuffer

HDAUDIO_BUS_INTERFACE_BDL

SetupDmaEngineWithBdl