次の方法で共有


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

こちらもご覧ください

HDAUDIO_BUS_INTERFACE_V3

コールバック関数PREGISTER_NOTIFICATION_CALLBACK

hdaudio.h