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 がオーディオ バッファーを通過するたびに、登録されたイベントが 1 回または 2 回通知されます。
CallbackContext
コールバック ルーチンのドライバー固有のコンテキスト値。
戻り値
RegisterNotificationCallback は、呼び出しによってイベントが正常に登録された場合にSTATUS_SUCCESSを返します。 それ以外の場合、ルーチンは STATUS_INSUFFICIENT_RESOURCES を返して、操作を完了するために使用できるリソースが不足していることを示します。
詳細については、「 NTSTATUS 値」を参照してください。
注釈
RegisterNotificationCallback は、HD オーディオ バス ドライバーに通知コールバック ルーチンを登録します。 HD オーディオ バス ドライバーは、登録されている通知イベントと各 DMA エンジンのコールバック ルーチンの一覧を保持します。 エンジンが IOC 割り込みを受信するたびに、すべてのイベントが通知され、すべての通知コールバック ルーチンが IRQL=DPC で呼び出され、IOC が発生した時点で QPC タイムスタンプが付きます。
通知コールバック ルーチンは、同じ NotificationCallback 値と CallbackContext 値を使用して UnregisterNotificationCallback を呼び出すことによって登録解除されます。
HD Audio バス ドライバーは、登録後、一致する登録解除が呼び出されるまで FDO の参照を維持します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | 19H1 |
Header | hdaudio.h (hdaudio.h を含む) |
IRQL | PASSIVE_LEVEL |