PREGISTER_NOTIFICATION_CALLBACK 콜백 함수(hdaudio.h)

RegisterNotificationCallback 루틴은 더 정확한 타이밍 정보로 DMA 진행률 알림을 받을 수 있도록 콜백 루틴을 등록합니다.

구문

PREGISTER_NOTIFICATION_CALLBACK PregisterNotificationCallback;

NTSTATUS PregisterNotificationCallback(
  PVOID _context,
  HANDLE Handle,
  PDEVICE_OBJECT Fdo,
  PHDAUDIO_DMA_NOTIFICATION_CALLBACK NotificationCallback,
  PVOID CallbackContext
)
{...}

매개 변수

_context

HDAUDIO_BUS_INTERFACE_V3 구조체의 Context 멤버에서 컨텍스트 값을 지정합니다.

Handle

DMA 엔진을 식별하는 핸들입니다. 이 핸들 값은 AllocateCaptureDmaEngine 또는 AllocateRenderDmaEngine에 대한 이전 호출에서 가져옵니다.

Fdo

콜백을 소유하는 FDO입니다. 콜백 루틴이 유효한지 확인하기 위해 콜백이 등록된 동안 hdaudbus 드라이버는 이 FDO에 대한 참조를 사용합니다.

NotificationCallback

DMA가 진행 중일 때 드라이버에 알리기 위해 호출되는 콜백 루틴입니다. AllocateDmaBufferWithNotification에 사용되는 알림 수 매개 변수에 따라 등록된 이벤트는 DMA가 오디오 버퍼를 통과할 때마다 한두 번 신호를 받습니다.

CallbackContext

콜백 루틴에 대한 드라이버별 컨텍스트 값입니다.

반환 값

RegisterNotificationCallback은 호출이 이벤트를 성공적으로 등록하는 경우 STATUS_SUCCESS 반환합니다. 그렇지 않으면 루틴은 STATUS_INSUFFICIENT_RESOURCES 반환하여 작업을 완료하는 데 사용할 수 있는 리소스가 부족함을 나타냅니다.

자세한 내용은 NTSTATUS 값을 참조하세요.

설명

RegisterNotificationCallback은 알림 콜백 루틴을 HD 오디오 버스 드라이버에 등록합니다. HD 오디오 버스 드라이버는 각 DMA 엔진에 대해 등록된 알림 이벤트 및 콜백 루틴 목록을 유지 관리합니다. 엔진이 IOC 인터럽트를 받을 때마다 모든 이벤트가 신호를 받고 IOC가 발생했을 때 QPC 타임스탬프가 있는 IRQL=DPC에서 모든 알림 콜백 루틴이 호출됩니다.

Notification Callback 루틴은 동일한 NotificationCallback 및 CallbackContext 값으로 UnregisterNotificationCallback을 호출하여 등록 취소됩니다.

HD 오디오 버스 드라이버는 일치하는 등록 취소가 호출될 때까지 등록 후 FDO에 대한 참조를 유지합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 19H1
머리글 hdaudio.h(hdaudio.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

HDAUDIO_BUS_INTERFACE_V3

PREGISTER_NOTIFICATION_CALLBACK 콜백 함수

hdaudio.h