다음을 통해 공유


PFREE_DMA_ENGINE 콜백 함수(hdaudio.h)

FreeDmaEngine 루틴은 AllocateCaptureDmaEngine 또는 AllocateRenderDmaEngine호출하여 이전에 할당된 DMA 엔진을 해제합니다.

FreeDmaEngine 루틴에 대한 함수 포인터 형식은 다음과 같이 정의됩니다.

통사론

PFREE_DMA_ENGINE PfreeDmaEngine;

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

매개 변수

[in] _context

HDAUDIO_BUS_INTERFACEContext 멤버, HDAUDIO_BUS_INTERFACE_V2 또는 HDAUDIO_BUS_INTERFACE_BDL 구조체의 컨텍스트 값을 지정합니다.

[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 ).
  • 스트림이 다시 설정이 아닌 상태에 있습니다.
오디오 드라이버는 이 루틴을 호출하여 핀을 닫고 스트림을 파괴합니다.

요구 사항

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

참고 항목

AllocateCaptureDmaEngine

AllocateRenderDmaEngine

freeContiguousDmaBuffer

freeDmaBuffer

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2