ITLegacyAddressMediaControl
COM公式ドキュメント
ITLegacyAddressMediaControl インターフェイスは、デバイスとその構成に直接アクセスする必要があるレガシーアプリケーションをサポートするために提供されます。このインターフェイスは Address Object によって公開され、ITAddress に対して QueryInterface を呼び出すことで作成できます。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetID メソッドは、現在のアドレスに関連付けられた指定のデバイスクラスに対応するデバイス識別子を返します。
| pDeviceClass | LPWSTR | in | 構成情報が必要な TAPI デバイスクラス を格納した BSTR へのポインター。 |
| pdwSize | DWORD* | out | 返されるデバイス識別子の長さ。 |
| ppDeviceID | BYTE** | out | デバイス識別子。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メソッドは失敗しました。これは、指定されたクラスのデバイスが現在のアドレスに関連付けられていないことを意味する場合があります。 | |
| pdwSize または ppDeviceID パラメーターが有効なポインターではありません。 |
解説(Remarks)
アプリケーションは、このメソッドを呼び出す前に ITTAPI::RegisterCallNotifications を呼び出す必要があります。
アプリケーションは、pDeviceClass パラメーターのメモリを割り当てるために SysAllocString を使用し、その変数が不要になったときにメモリを解放するために SysFreeString を使用する必要があります。
アプリケーションは、ppDeviceID パラメーターに割り当てられたメモリを解放するために CoTaskMemFree 関数を呼び出す必要があります。
TAPI 2.1 相互参照: lineGetDevConfig, lineSetDevConfig, lineGetID
GetDevConfig メソッドは、不透明なデータ構造を返します。
| pDeviceClass | LPWSTR | in | 構成情報が必要な TAPI デバイスクラス を格納した BSTR へのポインター。 |
| pdwSize | DWORD* | out | 構成配列のサイズへのポインター。 |
| ppDeviceConfig | BYTE** | out | デバイス構成情報を格納したバイト配列へのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDeviceClass、pdwSize、または ppDeviceConfig パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
このメソッドは、 LineGetDevConfig TAPI 2.1 関数の COM ラッパーです。
このメソッドを呼び出す前に GetID を実行する必要があります。
アプリケーションは、pDeviceClass パラメーターのメモリを割り当てるために SysAllocString を使用し、その変数が不要になったときにメモリを解放するために SysFreeString を使用する必要があります。
アプリケーションは、ppDeviceConfig パラメーターに割り当てられたメモリを解放するために CoTaskMemFree 関数を呼び出す必要があります。
TAPI 2.1 相互参照: lineGetDevConfig, lineSetDevConfig
SetDevConfig 関数を使用すると、アプリケーションは回線デバイス上のメディアストリームデバイスの構成を、以前に GetDevConfig を使用して取得したセットアップに復元できます。
| pDeviceClass | LPWSTR | in | 構成情報が必要な TAPI デバイスクラス を格納した BSTR へのポインター。 |
| dwSize | DWORD | in | 構成配列のサイズ。 |
| pDeviceConfig | BYTE* | in | GetDevConfig の呼び出しによって取得されたデバイス構成情報を格納したバイト配列へのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDeviceClass、pdwSize、または ppDeviceConfig パラメーターが有効なポインターではありません。 | |
| pdwSize パラメーターがゼロです。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
このメソッドは、 lineSetDevConfig TAPI 2.1 関数の COM ラッパーです。
このメソッドを呼び出す前に GetID を実行する必要があります。
アプリケーションは、pDeviceClass パラメーターのメモリを割り当てるために SysAllocString を使用し、その変数が不要になったときにメモリを解放するために SysFreeString を使用する必要があります。
TAPI 2.1 相互参照: lineGetDevConfig, lineSetDevConfig
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITLegacyAddressMediaControl "{AB493640-4C0B-11D2-A046-00C04FB6809F}" #usecom global ITLegacyAddressMediaControl IID_ITLegacyAddressMediaControl "{}" #comfunc global ITLegacyAddressMediaControl_GetID 3 wstr,var,var #comfunc global ITLegacyAddressMediaControl_GetDevConfig 4 wstr,var,var #comfunc global ITLegacyAddressMediaControl_SetDevConfig 5 wstr,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ITLegacyAddressMediaControl "{AB493640-4C0B-11D2-A046-00C04FB6809F}" #usecom global ITLegacyAddressMediaControl IID_ITLegacyAddressMediaControl "{}" #comfunc global ITLegacyAddressMediaControl_GetID 3 wstr,sptr,sptr #comfunc global ITLegacyAddressMediaControl_GetDevConfig 4 wstr,sptr,sptr #comfunc global ITLegacyAddressMediaControl_SetDevConfig 5 wstr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。