IAudioProcessingObjectNotifications
COM公式ドキュメント
APO エンドポイントおよびシステムエフェクトの通知に関する、オーディオ関連の一般的な通知を登録して受信するために、クライアントによって実装されます。
解説(Remarks)
オーディオドライバーに同梱できる Audio Processing Objects (APO) 向けの Windows 11 API の詳細については、Windows 11 APIs for Audio Processing Objects を参照してください。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
APO エンドポイントおよびシステムエフェクトの通知に関する通知コールバックを受信するためにクライアントが登録できるよう、システムによって呼び出されます。
| apoNotifications | APO_NOTIFICATION_DESCRIPTOR** | out | 通知が要求される APO 変更のセットを指定する APO_NOTIFICATION_DESCRIPTOR の配列へのポインターを返す出力パラメーターです。呼び出し先は CoTaskMemAlloc を使用して APO_NOTIFICATION_DESCRIPTOR 構造体を割り当てます。呼び出し元は、使用が終わったら CoTaskMemFree を使用してその構造体を解放する必要があります。 |
| count | DWORD* | out | apoNotifications で返される項目の数を指定する出力パラメーターです。 |
戻り値
HRESULT。
解説(Remarks)
オーディオドライバーに同梱できる Audio Processing Objects (APO) 向けの Windows 11 API の詳細については、Windows 11 APIs for Audio Processing Objects を参照してください。
APO エンドポイントまたはシステムエフェクトの変更をクライアントに通知するために、システムによって呼び出されます。
| apoNotification | APO_NOTIFICATION* | in | 通知に関連付けられた APO 変更を表す APO_NOTIFICATION です。 |
解説(Remarks)
このメソッドが呼び出される APO 変更のセットは、IAudioProcessingObjectNotifications::GetApoNotificationRegistrationInfo を実装することで指定します。
このメソッドは LockForProcess が呼び出された後に呼び出され、UnlockForProcess の前に呼び出されなくなります。処理中の通知がある場合、それらは UnlockForProcess の実行中または実行後に処理される可能性があります。この場合、APO 側で同期を処理する必要があります。
HandleNotification メソッドはいずれかのプロパティが変更されたときにのみ呼び出されるため、APO は各プロパティの初期値を取得するために一度クエリを実行する必要があります。ただし、APO が APO_NOTIFICATION_TYPE_ENDPOINT_VOLUME を登録した場合の初期のオーディオエンドポイント音量、および APO が APO_NOTIFICATION_TYPE_ENDPOINT_PROPERTY_CHANGE を登録した場合の PKEY_AudioEndpoint_Disable_SysFx の値は例外です。
オーディオドライバーに同梱できる Audio Processing Objects (APO) 向けの Windows 11 API の詳細については、Windows 11 APIs for Audio Processing Objects を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAudioProcessingObjectNotifications "{56B0C76F-02FD-4B21-A52E-9F8219FC86E4}" #usecom global IAudioProcessingObjectNotifications IID_IAudioProcessingObjectNotifications "{}" #comfunc global IAudioProcessingObjectNotifications_GetApoNotificationRegistrationInfo 3 var,var #comfunc global IAudioProcessingObjectNotifications_HandleNotification 4 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IAudioProcessingObjectNotifications "{56B0C76F-02FD-4B21-A52E-9F8219FC86E4}" #usecom global IAudioProcessingObjectNotifications IID_IAudioProcessingObjectNotifications "{}" #comfunc global IAudioProcessingObjectNotifications_GetApoNotificationRegistrationInfo 3 sptr,sptr #comfunc global IAudioProcessingObjectNotifications_HandleNotification 4 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。