ITAddress
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ITAddress インターフェイスは Address オブジェクトの基底インターフェイスです。アプリケーションはこのインターフェイスを使用して、Address オブジェクトに関する情報の取得や Address オブジェクトの利用を行います。
メソッド 15
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
get_State メソッドは、アドレスの現在の状態を pAddressState に取得します。
| pAddressState | ADDRESS_STATE* | out | ADDRESS_STATE のメンバーへのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| pAddressState パラメーターが有効なポインターではありません。 |
get_AddressName メソッドは、アドレスの表示可能な名前を取得します。
| ppName | LPWSTR* | out | 表示可能なアドレス名を格納する BSTR へのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| ppName パラメーターが有効なポインターではありません。 |
解説(Remarks)
アプリケーションは、ppName パラメーターに割り当てられたメモリを解放するために SysFreeString を使用する必要があります。
get_ServiceProviderName メソッドは、このアドレスをサポートするテレフォニーサービスプロバイダー (TSP) の名前を取得します。たとえば、Unimodem サービスプロバイダーの場合は Unimdm.tsp、H323 サービスプロバイダーの場合は H323.tsp などです。
| ppName | LPWSTR* | out | サービスプロバイダー名を格納する BSTR へのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppName パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| 現在のアドレスをサポートするサービスプロバイダーが見つかりませんでした。 |
解説(Remarks)
アプリケーションは、ppName パラメーターに割り当てられたメモリを解放するために SysFreeString を使用する必要があります。
AddressCapString に ACS_PROVIDERSPECIFIC を設定した ITAddressCapabilities::get_AddressCapabilityString を使用すると、TSP 依存の形式でプロバイダー名を取得できます。これは、TAPI 2.x の LINEDEVCAPS 構造体の dwProviderInfoOffset メンバーにある文字列を返します。
get_TAPIObject メソッドは、このアドレスを所有する TAPI オブジェクトへのポインターを取得します。
| ppTapiObject | ITTAPI** | out | ITTAPI インターフェイスへのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| ppTapiObject パラメーターが有効なポインターではありません。 |
CreateCall メソッドは、発信通話を行うために使用できる新しい Call オブジェクトを作成し、そのオブジェクトの ITBasicCallControl インターフェイスへのポインターを返します。新しく作成された通話は CS_IDLE 状態にあり、メディアやターミナルは選択されていません。
| pDestAddress | LPWSTR | in | この BSTR 文字列には宛先アドレスが格納されます。形式はプロバイダー固有です。このポインターは、ダイヤルを行わないアドレス (ホットフォンなど) の場合や、すべてのダイヤルを ITBasicCallControl::Dial を使用して行う場合は NULL にできます。 ITBasicCallControl::Pickup で NULL の pGroupID と組み合わせて NULL を指定すると、グループピックアップになります。逆多重化機能を持つサービスプロバイダーでは、アプリケーションが一度に複数のアドレスを指定できる場合があります。 |
| lAddressType | INT | in | アドレスの形式を記述する、LINEADDRESSTYPE_PHONENUMBER などの アドレスタイプ定数を格納します。値はこのアドレスに対して有効である必要があります。値を確認するには、AddressCap に AC_ADDRESSTYPES を設定した ITAddressCapabilities::get_AddressCapability を使用します。 |
| lMediaTypes | INT | in | 通話セッションに関与する メディアタイプを識別します。 |
| ppCall | ITBasicCallControl** | out | ITBasicCallControl インターフェイスへのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| アドレスタイプ lAddressType が無効であるか、複数のアドレスタイプを指定しています。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| ppCall パラメーターが有効なポインターではありません。 |
解説(Remarks)
アプリケーションは、pDestAddress パラメーターのメモリを割り当てるために SysAllocString を使用し、変数が不要になったときにそのメモリを解放するために SysFreeString を使用する必要があります。
アドレスタイプが LINEADDRESSTYPE_SDP の場合、アプリケーションは、格納されている SDP 情報が RFC 2327 に従って正しく構築されていることを確認するために、pDestAddress に対して ITSDP::get_IsValid メソッドを呼び出す必要があります。
会議、転送、または着信転送 (フォワード) の操作中などに使用される相談 (コンサルテーション) 通話は、このメソッドを使用して作成する必要があります。
TAPI は、ITAddress::CreateCall によって返される ITBasicCallControl インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITBasicCallControl インターフェイスに対して Release を呼び出す必要があります。
get_Calls メソッドは、アドレス上で現在アクティブな通話のコレクションを作成します。このメソッドは、Visual Basic で記述されたものなどの Automation クライアントアプリケーション向けに提供されています。C および C++ アプリケーションは EnumerateCalls メソッドを使用する必要があります。
| pVariant | VARIANT* | out | ITCallInfo インターフェイスポインター (Call オブジェクト) の ITCollection を格納する VARIANT へのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| pVariant パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
TAPI は、ITAddress::get_Calls によって返される ITCallInfo インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITCallInfo インターフェイスに対して Release を呼び出す必要があります。
EnumerateCalls メソッドは、現在のアドレス上の通話を列挙します。このメソッドは C および C++ アプリケーション向けに提供されています。Visual Basic で記述されたものなどの Automation クライアントアプリケーションは、get_Calls メソッドを使用する必要があります。
| ppCallEnum | IEnumCall** | out | IEnumCall インターフェイスへのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| ppCallEnum パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
TAPI は、ITAddress::EnumerateCalls によって返される IEnumCall インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために IEnumCall インターフェイスに対して Release を呼び出す必要があります。
get_DialableAddress メソッドは、このアドレスへの接続に使用できる BSTR を取得します。この BSTR は、電話番号や電子メール名など、別のアプリケーションがこのアドレスへの接続に使用する宛先アドレス文字列に対応します。
| pDialableAddress | LPWSTR* | out | ダイヤル可能なアドレス文字列を格納する BSTR へのポインター。これは ITAddress::CreateCall の pDestAddress 引数と一致します。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| pDialableAddress パラメーターが有効なポインターではありません。 |
解説(Remarks)
アプリケーションは、pDialableAddress パラメーターに割り当てられたメモリを解放するために SysFreeString を使用する必要があります。
この値が利用できるかどうかはサービスプロバイダーによって異なります。たとえば、Unimodem サービスプロバイダーによって公開されるアドレスでは、このメソッドは電話番号ではなく空の文字列を返します。
CreateForwardInfoObject メソッドは、転送情報オブジェクトを作成し、ITForwardInformation インターフェイスポインターを返します。
| ppForwardInfo | ITForwardInformation** | out | ITForwardInformation インターフェイスへのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| ppForwardInfo パラメーターが有効なポインターではありません。 |
解説(Remarks)
アプリケーションは、新しく作成された ITForwardInformation オブジェクトを使用できるようにする前に、そのオブジェクトに情報を設定する必要があります。
TAPI は、ITAddress::CreateForwardInfoObject によって返される ITForwardInformation インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITForwardInformation インターフェイスに対して Release を呼び出す必要があります。
Forward メソッドは、ITForwardInformation に含まれる転送の指示に従って、アドレス宛ての通話を転送します。pForwardInfo が NULL に設定されている場合、転送はキャンセルされます。
| pForwardInfo | ITForwardInformation* | in | ITForwardInformation インターフェイスへのポインター。転送をキャンセルするには NULL を設定します。 |
| pCall | ITBasicCallControl* | in | テレフォニー環境で必要な場合の、相談 (コンサルテーション) 通話のための ITBasicCallControl インターフェイスへのポインター。不要な場合は NULL でもかまいません。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| アドレスが転送をサポートしていないか、pCall が有効な通話を指していません。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| pForwardInfo または pCall パラメーターが有効なポインターではありません。 | |
| TAPI 3 DLL がタイムアウトさせたため、操作は失敗しました。タイムアウト間隔は 2 分です。 | |
|
この TAPI 2.1 関数から返されるエラーコードについては、 LineForward を参照してください。 |
解説(Remarks)
pForwardInfo 内の情報は、それまでの転送の指示をすべて上書きします。
fDoNotDisturb を VARIANT_FALSE に設定して ITAddress::put_DoNotDisturb を呼び出すと、すべての転送がキャンセルされます。
アプリケーションは、 ITAddressCapabilities::get_AddressCapability (AC_ADDRESSCAPFLAGS, plCapability) を呼び出し、 LINEADDRCAPFLAGS_ 定数のメンバーであるフラグ LINEADDRCAPFLAGS_FWDCONSULT が plCapability に設定されているかどうかを確認することで、NULL 以外の相談通話が必要かどうかを判断できます。設定されている場合は、 Forward メソッドの pCall パラメーターに NULL 以外の値が必要です。
Forward メソッドは、部分的には TAPI 2.1 の LineForward 関数の COM ラッパーです。
get_CurrentForwardInfo メソッドは、現在の転送情報オブジェクトへのポインターを取得します。
| ppForwardInfo | ITForwardInformation** | out | ITForwardInformation インターフェイスへのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| メソッドは実装されていません。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| ppForwardInfo パラメーターが有効なポインターではありません。 |
解説(Remarks)
TAPI は、ITAddress::get_ForwardInfo によって返される ITForwardInformation インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITForwardInformation インターフェイスに対して Release を呼び出す必要があります。
put_MessageWaiting メソッドは、アドレスのメッセージ待機の状態を設定します。
| fMessageWaiting | VARIANT_BOOL | in | 設定するメッセージ待機の状態。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| fMessageWaiting パラメーターが有効ではありません。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| TAPI 3 DLL がタイムアウトさせたため、操作は失敗しました。タイムアウト間隔は 2 分です。 |
解説(Remarks)
TAPI 2.x: に精通しているプログラマー向け: このメソッドは、 lineSetLineDevStatus を呼び出すことで、 LINEDEVSTATUS 構造体の dwDevStatusFlags メンバーにあるフラグ LINEDEVSTATUSFLAGS_MSGWAIT のオン/オフを切り替えます。
get_MessageWaiting メソッドは、アドレスにメッセージが待機しているかどうかを判断します。
| pfMessageWaiting | VARIANT_BOOL* | out | VARIANT_TRUE が返された場合はメッセージが待機しており、VARIANT_FALSE が返された場合は待機しているメッセージはありません。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| pfMessageWaiting パラメーターが有効なポインターではありません。 |
解説(Remarks)
TAPI 2.x では、これは構造体 LINEDEVSTATUS のメンバー dwDevStatusFlags にフラグ LINEDEVSTATUSFLAGS_MSGWAIT が設定されているかどうかに対応します。
put_DoNotDisturb メソッドは、応答不可 (do not disturb) の状態を設定します。応答不可機能は、すべてのアドレスで利用できるとは限りません。
| fDoNotDisturb | VARIANT_BOOL | in | VARIANT_TRUE の場合、応答不可機能が有効になります。VARIANT_FALSE の場合、応答不可機能が無効になり、すべての転送がキャンセルされます。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| fDoNotDisturb パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| TAPI 3 DLL がタイムアウトさせたため、操作は失敗しました。タイムアウト間隔は 2 分です。 |
解説(Remarks)
DoNotDisturb 機能は転送を使用して実装されています。 put_DoNotDisturb が VARIANT_TRUE で呼び出されると、Tapi3.dll は、モードを LINEFORWARDMODE_UNCOND に設定し、宛先アドレスを NULL に設定した LINEFORWARD 項目を 1 つだけ持つ LINEFORWARD リストを作成します。 put_DoNotDisturb が VARIANT_FALSE で呼び出されると、Tapi3.dll は、 ITAddress::Forward で設定された転送ルールも含め、このアドレスの転送を完全にキャンセルします。
get_DoNotDisturb メソッドは、アドレスにおける応答不可 (do not disturb) 機能の現在の状態を取得します。応答不可機能は、すべてのアドレスで利用できるとは限りません。
| pfDoNotDisturb | VARIANT_BOOL* | out | VARIANT_TRUE の場合、応答不可機能が有効になっています。VARIANT_FALSE の場合、応答不可機能は有効ではありません。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
操作は利用できません。 |
| この操作はこのアドレスではサポートされていません。 | |
| pfDoNotDisturb パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
TAPI 2.x: に精通しているプログラマー向け: DoNotDisturb 機能は、アドレスに存在する場合、"forward" 機能を使用して実装されます。 get_DoNotDisturb が呼び出されると、Tapi3.dll はアドレスオブジェクトの LINEADDRESSSTATUS を取得し、その LINEFORWARD エントリを探します。そのようなエントリが 1 つ見つかり、その dwDestAddressOffset メンバーが 0 (ゼロ) の場合、DoNotDisturb はオンになっているとみなされ、したがってこのメソッドの値として VARIANT_TRUE が返されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITAddress "{B1EFC386-9355-11D0-835C-00AA003CCABD}" #usecom global ITAddress IID_ITAddress "{}" #comfunc global ITAddress_get_State 7 var #comfunc global ITAddress_get_AddressName 8 var #comfunc global ITAddress_get_ServiceProviderName 9 var #comfunc global ITAddress_get_TAPIObject 10 sptr #comfunc global ITAddress_CreateCall 11 wstr,int,int,sptr #comfunc global ITAddress_get_Calls 12 var #comfunc global ITAddress_EnumerateCalls 13 sptr #comfunc global ITAddress_get_DialableAddress 14 var #comfunc global ITAddress_CreateForwardInfoObject 15 sptr #comfunc global ITAddress_Forward 16 sptr,sptr #comfunc global ITAddress_get_CurrentForwardInfo 17 sptr #comfunc global ITAddress_put_MessageWaiting 18 int #comfunc global ITAddress_get_MessageWaiting 19 var #comfunc global ITAddress_put_DoNotDisturb 20 int #comfunc global ITAddress_get_DoNotDisturb 21 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ITAddress "{B1EFC386-9355-11D0-835C-00AA003CCABD}" #usecom global ITAddress IID_ITAddress "{}" #comfunc global ITAddress_get_State 7 sptr #comfunc global ITAddress_get_AddressName 8 sptr #comfunc global ITAddress_get_ServiceProviderName 9 sptr #comfunc global ITAddress_get_TAPIObject 10 sptr #comfunc global ITAddress_CreateCall 11 wstr,int,int,sptr #comfunc global ITAddress_get_Calls 12 sptr #comfunc global ITAddress_EnumerateCalls 13 sptr #comfunc global ITAddress_get_DialableAddress 14 sptr #comfunc global ITAddress_CreateForwardInfoObject 15 sptr #comfunc global ITAddress_Forward 16 sptr,sptr #comfunc global ITAddress_get_CurrentForwardInfo 17 sptr #comfunc global ITAddress_put_MessageWaiting 18 int #comfunc global ITAddress_get_MessageWaiting 19 sptr #comfunc global ITAddress_put_DoNotDisturb 20 int #comfunc global ITAddress_get_DoNotDisturb 21 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。