IHardwareAudioEngineBase
COM公式ドキュメント
IHardwareAudioEngineBase インターフェースは、オーディオスタックがハードウェアオーディオエンジンの構成や情報取得を行うために、オーディオエンドポイントによって実装されます。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetAvailableOffloadConnectorCount メソッドは、ハードウェアオーディオエンジン上でオフロードされたストリームを処理できる、利用可能なエンドポイントの数を取得します。
| _pwstrDeviceId | LPWSTR | in | ハードウェアオーディオエンジンデバイスのデバイス ID へのポインター。 |
| _uConnectorId | DWORD | in | エンドポイントコネクタの識別子。 |
| _pAvailableConnectorInstanceCount | DWORD* | out | オフロードされたオーディオストリームを処理できる、利用可能なエンドポイントコネクタの数へのポインター。 |
戻り値
GetAvailableOffloadConnectorCount メソッドは、正常に完了した場合は S_OK を返します。それ以外の場合は適切なエラーコードを返します。
GetEngineFormat メソッドは、オフロードされたオーディオストリームの現在のデータ形式を取得します。
| pDevice | IMMDevice* | in | IMMDevice インターフェースへのポインター。 |
| _bRequestDeviceFormat | BOOL | in | デバイス形式を取得するために IMMDevice インターフェースにアクセスしているかどうかを示すブール変数。 |
| _ppwfxFormat | WAVEFORMATEX** | inout | ハードウェアオーディオエンジンに関する情報を提供する WAVEFORMATEX 構造体へのポインターのポインター。この情報には、波形オーディオ形式の種類、オーディオチャネル数、オーディオエンジンのサンプルレートが含まれます。 |
戻り値
GetEngineFormat メソッドは、正常に完了した場合は S_OK を返します。それ以外の場合は適切なエラーコードを返します。
SetEngineDeviceFormat メソッドは、ハードウェアオーディオエンジンの波形オーディオ形式を設定します。
| pDevice | IMMDevice* | in | IMMDevice インターフェースへのポインター。 |
| _pwfxFormat | WAVEFORMATEX* | inout | ハードウェアオーディオエンジンに関する情報を提供する WAVEFORMATEX 構造体へのポインター。 |
戻り値
SetEngineDeviceFormat メソッドは、正常に完了した場合は S_OK を返します。それ以外の場合は適切なエラーコードを返します。
SetGfxState メソッドは、オフロードされたオーディオストリームの GFX 状態を設定します。
| pDevice | IMMDevice* | in | IMMDevice インターフェースへのポインター。 |
| _bEnable | BOOL | in | ブール変数へのポインター。 |
戻り値
SetGfxState メソッドは、正常に完了した場合は S_OK を返します。それ以外の場合は適切なエラーコードを返します。
GetGfxState メソッドは、オフロードされたオーディオストリームの GFX 状態を取得します。
| pDevice | IMMDevice* | in | IMMDevice インターフェースへのポインター。 |
| _pbEnable | BOOL* | out | ブール変数へのポインター。 |
戻り値
GetGfxState メソッドは、正常に完了した場合は S_OK を返します。それ以外の場合は適切なエラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IHardwareAudioEngineBase "{EDDCE3E4-F3C1-453A-B461-223563CBD886}" #usecom global IHardwareAudioEngineBase IID_IHardwareAudioEngineBase "{}" #comfunc global IHardwareAudioEngineBase_GetAvailableOffloadConnectorCount 3 wstr,int,var #comfunc global IHardwareAudioEngineBase_GetEngineFormat 4 sptr,int,var #comfunc global IHardwareAudioEngineBase_SetEngineDeviceFormat 5 sptr,var #comfunc global IHardwareAudioEngineBase_SetGfxState 6 sptr,int #comfunc global IHardwareAudioEngineBase_GetGfxState 7 sptr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IHardwareAudioEngineBase "{EDDCE3E4-F3C1-453A-B461-223563CBD886}" #usecom global IHardwareAudioEngineBase IID_IHardwareAudioEngineBase "{}" #comfunc global IHardwareAudioEngineBase_GetAvailableOffloadConnectorCount 3 wstr,int,sptr #comfunc global IHardwareAudioEngineBase_GetEngineFormat 4 sptr,int,sptr #comfunc global IHardwareAudioEngineBase_SetEngineDeviceFormat 5 sptr,sptr #comfunc global IHardwareAudioEngineBase_SetGfxState 6 sptr,int #comfunc global IHardwareAudioEngineBase_GetGfxState 7 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。