ホーム › Devices.Tapi › ITPhone
ITPhone
COMIDispatch (デュアル)✅ IDispatch を実装(デュアルインターフェース)。HSP では
comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。メソッド 33
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
vtbl 7 HRESULT Open(PHONE_PRIVILEGE Privilege)
| Privilege | PHONE_PRIVILEGE | in | 電話機を開く際に要求する権限(所有/監視)を示すPHONE_PRIVILEGE値。 |
vtbl 8 HRESULT Close()
| pAddresses | VARIANT* | out | この電話機に関連付けられたアドレスのコレクションをVARIANTで受け取る出力先。 |
vtbl 10 HRESULT EnumerateAddresses(IEnumAddress** ppEnumAddress)
| ppEnumAddress | IEnumAddress** | out | 関連アドレスを列挙するIEnumAddressを受け取る出力先。 |
vtbl 11 HRESULT get_PhoneCapsLong(PHONECAPS_LONG pclCap, INT* plCapability)
| pclCap | PHONECAPS_LONG | in | 問い合わせる数値型の電話機能力項目を示すPHONECAPS_LONG値。 |
| plCapability | INT* | out | 当該能力の数値を受け取る出力先。 |
vtbl 12 HRESULT get_PhoneCapsString(PHONECAPS_STRING pcsCap, LPWSTR* ppCapability)
| pcsCap | PHONECAPS_STRING | in | 問い合わせる文字列型の電話機能力項目を示すPHONECAPS_STRING値。 |
| ppCapability | LPWSTR* | out | 当該能力の文字列値を受け取る出力先。SysFreeStringで解放する。 |
| pAddress | ITAddress* | in | 対象アドレスを示すITAddress。そのアドレスのターミナルを取得する。 |
| pTerminals | VARIANT* | out | 電話機のターミナルのコレクションをVARIANTで受け取る出力先。 |
vtbl 14 HRESULT EnumerateTerminals(ITAddress* pAddress, IEnumTerminal** ppEnumTerminal)
| pAddress | ITAddress* | in | 対象アドレスを示すITAddress。 |
| ppEnumTerminal | IEnumTerminal** | out | 電話機のターミナルを列挙するIEnumTerminalを受け取る出力先。 |
vtbl 15 HRESULT get_ButtonMode(INT lButtonID, PHONE_BUTTON_MODE* pButtonMode)
| lButtonID | INT | in | 対象ボタンの識別ID(0始まり)。 |
| pButtonMode | PHONE_BUTTON_MODE* | out | 当該ボタンのモードを示すPHONE_BUTTON_MODEを受け取る出力先。 |
vtbl 16 HRESULT put_ButtonMode(INT lButtonID, PHONE_BUTTON_MODE ButtonMode)
| lButtonID | INT | in | 設定対象ボタンの識別ID。 |
| ButtonMode | PHONE_BUTTON_MODE | in | ボタンに設定するモードを示すPHONE_BUTTON_MODE値。 |
vtbl 17 HRESULT get_ButtonFunction(INT lButtonID, PHONE_BUTTON_FUNCTION* pButtonFunction)
| lButtonID | INT | in | 対象ボタンの識別ID。 |
| pButtonFunction | PHONE_BUTTON_FUNCTION* | out | 当該ボタンの割り当て機能を示すPHONE_BUTTON_FUNCTIONを受け取る出力先。 |
vtbl 18 HRESULT put_ButtonFunction(INT lButtonID, PHONE_BUTTON_FUNCTION ButtonFunction)
| lButtonID | INT | in | 設定対象ボタンの識別ID。 |
| ButtonFunction | PHONE_BUTTON_FUNCTION | in | ボタンに割り当てる機能を示すPHONE_BUTTON_FUNCTION値。 |
| lButtonID | INT | in | 対象ボタンの識別ID。 |
| ppButtonText | LPWSTR* | out | 当該ボタンに表示されるテキストを受け取る出力先。 |
| lButtonID | INT | in | 設定対象ボタンの識別ID。 |
| bstrButtonText | LPWSTR | in | ボタンに設定する表示テキスト文字列。 |
vtbl 21 HRESULT get_ButtonState(INT lButtonID, PHONE_BUTTON_STATE* pButtonState)
| lButtonID | INT | in | 対象ボタンの識別ID。 |
| pButtonState | PHONE_BUTTON_STATE* | out | 当該ボタンの押下状態を示すPHONE_BUTTON_STATEを受け取る出力先。 |
vtbl 22 HRESULT get_HookSwitchState(PHONE_HOOK_SWITCH_DEVICE HookSwitchDevice, PHONE_HOOK_SWITCH_STATE* pHookSwitchState)
| HookSwitchDevice | PHONE_HOOK_SWITCH_DEVICE | in | 対象のフックスイッチデバイス(送受話器等)を示すPHONE_HOOK_SWITCH_DEVICE値。 |
| pHookSwitchState | PHONE_HOOK_SWITCH_STATE* | out | 当該デバイスのオン/オフフック状態を示すPHONE_HOOK_SWITCH_STATEを受け取る出力先。 |
vtbl 23 HRESULT put_HookSwitchState(PHONE_HOOK_SWITCH_DEVICE HookSwitchDevice, PHONE_HOOK_SWITCH_STATE HookSwitchState)
| HookSwitchDevice | PHONE_HOOK_SWITCH_DEVICE | in | 設定対象のフックスイッチデバイスを示すPHONE_HOOK_SWITCH_DEVICE値。 |
| HookSwitchState | PHONE_HOOK_SWITCH_STATE | in | 設定するオン/オフフック状態を示すPHONE_HOOK_SWITCH_STATE値。 |
| lRingMode | INT | in | 電話機に設定する着信音(リング)モードの番号。 |
| plRingMode | INT* | out | 現在の着信音モードの番号を受け取る出力先。 |
| lRingVolume | INT | in | 設定する着信音量(0〜65535の範囲)。 |
| plRingVolume | INT* | out | 現在の着信音量を受け取る出力先。 |
vtbl 28 HRESULT get_Privilege(PHONE_PRIVILEGE* pPrivilege)
| pPrivilege | PHONE_PRIVILEGE* | out | この電話機に対して保持している権限を示すPHONE_PRIVILEGEを受け取る出力先。 |
vtbl 29 HRESULT GetPhoneCapsBuffer(PHONECAPS_BUFFER pcbCaps, DWORD* pdwSize, BYTE** ppPhoneCapsBuffer)
| pcbCaps | PHONECAPS_BUFFER | in | 取得対象のバッファ型能力項目を示すPHONECAPS_BUFFER値。 |
| pdwSize | DWORD* | out | 返されるバッファのバイトサイズを受け取る出力先。 |
| ppPhoneCapsBuffer | BYTE** | out | 能力データを格納したバイトバッファを受け取る出力先。CoTaskMemFreeで解放する。 |
vtbl 30 HRESULT get_PhoneCapsBuffer(PHONECAPS_BUFFER pcbCaps, VARIANT* pVarBuffer)
| pcbCaps | PHONECAPS_BUFFER | in | 取得対象のバッファ型能力項目を示すPHONECAPS_BUFFER値。 |
| pVarBuffer | VARIANT* | out | 能力データをバイト配列VARIANTとして受け取る出力先。 |
vtbl 31 HRESULT get_LampMode(INT lLampID, PHONE_LAMP_MODE* pLampMode)
| lLampID | INT | in | 対象ランプの識別ID。 |
| pLampMode | PHONE_LAMP_MODE* | out | 当該ランプの点灯モードを示すPHONE_LAMP_MODEを受け取る出力先。 |
vtbl 32 HRESULT put_LampMode(INT lLampID, PHONE_LAMP_MODE LampMode)
| lLampID | INT | in | 設定対象ランプの識別ID。 |
| LampMode | PHONE_LAMP_MODE | in | ランプに設定する点灯モードを示すPHONE_LAMP_MODE値。 |
| pbstrDisplay | LPWSTR* | out | 電話機ディスプレイの現在の表示内容を受け取る出力先。 |
| lRow | INT | in | 表示を書き込む開始行位置(0始まり)。 |
| lColumn | INT | in | 表示を書き込む開始列位置(0始まり)。 |
| bstrDisplay | LPWSTR | in | ディスプレイに書き込む文字列。 |
| pAddresses | VARIANT* | out | 優先的に使用するアドレスのコレクションをVARIANTで受け取る出力先。 |
vtbl 36 HRESULT EnumeratePreferredAddresses(IEnumAddress** ppEnumAddress)
| ppEnumAddress | IEnumAddress** | out | 優先アドレスを列挙するIEnumAddressを受け取る出力先。 |
| pParams | BYTE* | in | サービスプロバイダーに渡すデバイス固有データのバイトバッファ。 |
| dwSize | DWORD | in | pParamsバッファのバイトサイズ。 |
| varDevSpecificByteArray | VARIANT | in | デバイス固有データをバイト配列として保持するVARIANT。 |
| lLowVersion | INT | in | 受け入れ可能な拡張バージョンの下限を指定する。 |
| lHighVersion | INT | in | 受け入れ可能な拡張バージョンの上限を指定する。 |
| plExtVersion | INT* | out | ネゴシエートされた拡張バージョン番号を受け取る出力先。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_ITPhone "{09D48DB4-10CC-4388-9DE7-A8465618975A}" #usecom global ITPhone IID_ITPhone "{}" #comfunc global ITPhone_Open 7 int #comfunc global ITPhone_Close 8 #comfunc global ITPhone_get_Addresses 9 var #comfunc global ITPhone_EnumerateAddresses 10 sptr #comfunc global ITPhone_get_PhoneCapsLong 11 int,var #comfunc global ITPhone_get_PhoneCapsString 12 int,var #comfunc global ITPhone_get_Terminals 13 sptr,var #comfunc global ITPhone_EnumerateTerminals 14 sptr,sptr #comfunc global ITPhone_get_ButtonMode 15 int,var #comfunc global ITPhone_put_ButtonMode 16 int,int #comfunc global ITPhone_get_ButtonFunction 17 int,var #comfunc global ITPhone_put_ButtonFunction 18 int,int #comfunc global ITPhone_get_ButtonText 19 int,var #comfunc global ITPhone_put_ButtonText 20 int,wstr #comfunc global ITPhone_get_ButtonState 21 int,var #comfunc global ITPhone_get_HookSwitchState 22 int,var #comfunc global ITPhone_put_HookSwitchState 23 int,int #comfunc global ITPhone_put_RingMode 24 int #comfunc global ITPhone_get_RingMode 25 var #comfunc global ITPhone_put_RingVolume 26 int #comfunc global ITPhone_get_RingVolume 27 var #comfunc global ITPhone_get_Privilege 28 var #comfunc global ITPhone_GetPhoneCapsBuffer 29 int,var,var #comfunc global ITPhone_get_PhoneCapsBuffer 30 int,var #comfunc global ITPhone_get_LampMode 31 int,var #comfunc global ITPhone_put_LampMode 32 int,int #comfunc global ITPhone_get_Display 33 var #comfunc global ITPhone_SetDisplay 34 int,int,wstr #comfunc global ITPhone_get_PreferredAddresses 35 var #comfunc global ITPhone_EnumeratePreferredAddresses 36 sptr #comfunc global ITPhone_DeviceSpecific 37 var,int #comfunc global ITPhone_DeviceSpecificVariant 38 int #comfunc global ITPhone_NegotiateExtVersion 39 int,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ITPhone "{09D48DB4-10CC-4388-9DE7-A8465618975A}" #usecom global ITPhone IID_ITPhone "{}" #comfunc global ITPhone_Open 7 int #comfunc global ITPhone_Close 8 #comfunc global ITPhone_get_Addresses 9 sptr #comfunc global ITPhone_EnumerateAddresses 10 sptr #comfunc global ITPhone_get_PhoneCapsLong 11 int,sptr #comfunc global ITPhone_get_PhoneCapsString 12 int,sptr #comfunc global ITPhone_get_Terminals 13 sptr,sptr #comfunc global ITPhone_EnumerateTerminals 14 sptr,sptr #comfunc global ITPhone_get_ButtonMode 15 int,sptr #comfunc global ITPhone_put_ButtonMode 16 int,int #comfunc global ITPhone_get_ButtonFunction 17 int,sptr #comfunc global ITPhone_put_ButtonFunction 18 int,int #comfunc global ITPhone_get_ButtonText 19 int,sptr #comfunc global ITPhone_put_ButtonText 20 int,wstr #comfunc global ITPhone_get_ButtonState 21 int,sptr #comfunc global ITPhone_get_HookSwitchState 22 int,sptr #comfunc global ITPhone_put_HookSwitchState 23 int,int #comfunc global ITPhone_put_RingMode 24 int #comfunc global ITPhone_get_RingMode 25 sptr #comfunc global ITPhone_put_RingVolume 26 int #comfunc global ITPhone_get_RingVolume 27 sptr #comfunc global ITPhone_get_Privilege 28 sptr #comfunc global ITPhone_GetPhoneCapsBuffer 29 int,sptr,sptr #comfunc global ITPhone_get_PhoneCapsBuffer 30 int,sptr #comfunc global ITPhone_get_LampMode 31 int,sptr #comfunc global ITPhone_put_LampMode 32 int,int #comfunc global ITPhone_get_Display 33 sptr #comfunc global ITPhone_SetDisplay 34 int,int,wstr #comfunc global ITPhone_get_PreferredAddresses 35 sptr #comfunc global ITPhone_EnumeratePreferredAddresses 36 sptr #comfunc global ITPhone_DeviceSpecific 37 sptr,int #comfunc global ITPhone_DeviceSpecificVariant 38 int #comfunc global ITPhone_NegotiateExtVersion 39 int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。