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 |
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기