Win32 API 日本語リファレンス
ホームDevices.Tapi › ITAddress

ITAddress

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDb1efc386-9355-11d0-835c-00aa003ccabd継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

ITAddress インターフェイスは Address オブジェクトの基底インターフェイスです。アプリケーションはこのインターフェイスを使用して、Address オブジェクトに関する情報の取得や Address オブジェクトの利用を行います。

メソッド 15

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_State(ADDRESS_STATE* pAddressState)

get_State メソッドは、アドレスの現在の状態を pAddressState に取得します。

pAddressStateADDRESS_STATE*outADDRESS_STATE のメンバーへのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

リターンコード 説明
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
E_POINTER
pAddressState パラメーターが有効なポインターではありません。
vtbl 8 HRESULT get_AddressName(LPWSTR* ppName)

get_AddressName メソッドは、アドレスの表示可能な名前を取得します。

ppNameLPWSTR*out表示可能なアドレス名を格納する BSTR へのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

リターンコード 説明
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
E_POINTER
ppName パラメーターが有効なポインターではありません。

解説(Remarks)

アプリケーションは、ppName パラメーターに割り当てられたメモリを解放するために SysFreeString を使用する必要があります。

vtbl 9 HRESULT get_ServiceProviderName(LPWSTR* ppName)

get_ServiceProviderName メソッドは、このアドレスをサポートするテレフォニーサービスプロバイダー (TSP) の名前を取得します。たとえば、Unimodem サービスプロバイダーの場合は Unimdm.tsp、H323 サービスプロバイダーの場合は H323.tsp などです。

ppNameLPWSTR*outサービスプロバイダー名を格納する BSTR へのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ppName パラメーターが有効なポインターではありません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
TAPI_E_NODRIVER
現在のアドレスをサポートするサービスプロバイダーが見つかりませんでした。

解説(Remarks)

アプリケーションは、ppName パラメーターに割り当てられたメモリを解放するために SysFreeString を使用する必要があります。

AddressCapStringACS_PROVIDERSPECIFIC を設定した ITAddressCapabilities::get_AddressCapabilityString を使用すると、TSP 依存の形式でプロバイダー名を取得できます。これは、TAPI 2.xLINEDEVCAPS 構造体の dwProviderInfoOffset メンバーにある文字列を返します。

vtbl 10 HRESULT get_TAPIObject(ITTAPI** ppTapiObject)

get_TAPIObject メソッドは、このアドレスを所有する TAPI オブジェクトへのポインターを取得します。

ppTapiObjectITTAPI**outITTAPI インターフェイスへのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

リターンコード 説明
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
E_POINTER
ppTapiObject パラメーターが有効なポインターではありません。
vtbl 11 HRESULT CreateCall(LPWSTR pDestAddress, INT lAddressType, INT lMediaTypes, ITBasicCallControl** ppCall)

CreateCall メソッドは、発信通話を行うために使用できる新しい Call オブジェクトを作成し、そのオブジェクトの ITBasicCallControl インターフェイスへのポインターを返します。新しく作成された通話は CS_IDLE 状態にあり、メディアやターミナルは選択されていません。

pDestAddressLPWSTRinこの BSTR 文字列には宛先アドレスが格納されます。形式はプロバイダー固有です。このポインターは、ダイヤルを行わないアドレス (ホットフォンなど) の場合や、すべてのダイヤルを ITBasicCallControl::Dial を使用して行う場合は NULL にできます。 ITBasicCallControl::PickupNULLpGroupID と組み合わせて NULL を指定すると、グループピックアップになります。逆多重化機能を持つサービスプロバイダーでは、アプリケーションが一度に複数のアドレスを指定できる場合があります。
lAddressTypeINTinアドレスの形式を記述する、LINEADDRESSTYPE_PHONENUMBER などの アドレスタイプ定数を格納します。値はこのアドレスに対して有効である必要があります。値を確認するには、AddressCapAC_ADDRESSTYPES を設定した ITAddressCapabilities::get_AddressCapability を使用します。
lMediaTypesINTin通話セッションに関与する メディアタイプを識別します。
ppCallITBasicCallControl**outITBasicCallControl インターフェイスへのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

意味
S_OK
メソッドは成功しました。
E_INVALIDARG
アドレスタイプ lAddressType が無効であるか、複数のアドレスタイプを指定しています。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
E_POINTER
ppCall パラメーターが有効なポインターではありません。

解説(Remarks)

アプリケーションは、pDestAddress パラメーターのメモリを割り当てるために SysAllocString を使用し、変数が不要になったときにそのメモリを解放するために SysFreeString を使用する必要があります。

アドレスタイプが LINEADDRESSTYPE_SDP の場合、アプリケーションは、格納されている SDP 情報が RFC 2327 に従って正しく構築されていることを確認するために、pDestAddress に対して ITSDP::get_IsValid メソッドを呼び出す必要があります。

会議、転送、または着信転送 (フォワード) の操作中などに使用される相談 (コンサルテーション) 通話は、このメソッドを使用して作成する必要があります。

TAPI は、ITAddress::CreateCall によって返される ITBasicCallControl インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITBasicCallControl インターフェイスに対して Release を呼び出す必要があります。

注意 このメソッドは、TAPI 2 の lineMakeCall と厳密に同じではありません。TAPI に同じ情報の多くを提供しますが、並列操作は ITBasicCallControl::Connect が呼び出されるまで実行されません。
vtbl 12 HRESULT get_Calls(VARIANT* pVariant)

get_Calls メソッドは、アドレス上で現在アクティブな通話のコレクションを作成します。このメソッドは、Visual Basic で記述されたものなどの Automation クライアントアプリケーション向けに提供されています。C および C++ アプリケーションは EnumerateCalls メソッドを使用する必要があります。

pVariantVARIANT*outITCallInfo インターフェイスポインター (Call オブジェクト) の ITCollection を格納する VARIANT へのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

意味
S_OK
メソッドは成功しました。
E_POINTER
pVariant パラメーターが有効なポインターではありません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。

解説(Remarks)

TAPI は、ITAddress::get_Calls によって返される ITCallInfo インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITCallInfo インターフェイスに対して Release を呼び出す必要があります。

vtbl 13 HRESULT EnumerateCalls(IEnumCall** ppCallEnum)

EnumerateCalls メソッドは、現在のアドレス上の通話を列挙します。このメソッドは C および C++ アプリケーション向けに提供されています。Visual Basic で記述されたものなどの Automation クライアントアプリケーションは、get_Calls メソッドを使用する必要があります。

ppCallEnumIEnumCall**outIEnumCall インターフェイスへのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

意味
S_OK
メソッドは成功しました。
E_POINTER
ppCallEnum パラメーターが有効なポインターではありません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。

解説(Remarks)

TAPI は、ITAddress::EnumerateCalls によって返される IEnumCall インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために IEnumCall インターフェイスに対して Release を呼び出す必要があります。

vtbl 14 HRESULT get_DialableAddress(LPWSTR* pDialableAddress)

get_DialableAddress メソッドは、このアドレスへの接続に使用できる BSTR を取得します。この BSTR は、電話番号や電子メール名など、別のアプリケーションがこのアドレスへの接続に使用する宛先アドレス文字列に対応します。

pDialableAddressLPWSTR*outダイヤル可能なアドレス文字列を格納する BSTR へのポインター。これは ITAddress::CreateCallpDestAddress 引数と一致します。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

意味
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
E_POINTER
pDialableAddress パラメーターが有効なポインターではありません。

解説(Remarks)

アプリケーションは、pDialableAddress パラメーターに割り当てられたメモリを解放するために SysFreeString を使用する必要があります。

この値が利用できるかどうかはサービスプロバイダーによって異なります。たとえば、Unimodem サービスプロバイダーによって公開されるアドレスでは、このメソッドは電話番号ではなく空の文字列を返します。

vtbl 15 HRESULT CreateForwardInfoObject(ITForwardInformation** ppForwardInfo)

CreateForwardInfoObject メソッドは、転送情報オブジェクトを作成し、ITForwardInformation インターフェイスポインターを返します。

ppForwardInfoITForwardInformation**outITForwardInformation インターフェイスへのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

意味
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
E_POINTER
ppForwardInfo パラメーターが有効なポインターではありません。

解説(Remarks)

アプリケーションは、新しく作成された ITForwardInformation オブジェクトを使用できるようにする前に、そのオブジェクトに情報を設定する必要があります。

TAPI は、ITAddress::CreateForwardInfoObject によって返される ITForwardInformation インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITForwardInformation インターフェイスに対して Release を呼び出す必要があります。

vtbl 16 HRESULT Forward(ITForwardInformation* pForwardInfo, ITBasicCallControl* pCall)

Forward メソッドは、ITForwardInformation に含まれる転送の指示に従って、アドレス宛ての通話を転送します。pForwardInfo が NULL に設定されている場合、転送はキャンセルされます。

pForwardInfoITForwardInformation*inITForwardInformation インターフェイスへのポインター。転送をキャンセルするには NULL を設定します。
pCallITBasicCallControl*inテレフォニー環境で必要な場合の、相談 (コンサルテーション) 通話のための ITBasicCallControl インターフェイスへのポインター。不要な場合は NULL でもかまいません。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

リターンコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
アドレスが転送をサポートしていないか、pCall が有効な通話を指していません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
E_POINTER
pForwardInfo または pCall パラメーターが有効なポインターではありません。
TAPI_E_TIMEOUT
TAPI 3 DLL がタイムアウトさせたため、操作は失敗しました。タイムアウト間隔は 2 分です。
LINEERR_
この TAPI 2.1 関数から返されるエラーコードについては、 LineForward を参照してください。

解説(Remarks)

pForwardInfo 内の情報は、それまでの転送の指示をすべて上書きします。

fDoNotDisturbVARIANT_FALSE に設定して ITAddress::put_DoNotDisturb を呼び出すと、すべての転送がキャンセルされます。

アプリケーションは、 ITAddressCapabilities::get_AddressCapability (AC_ADDRESSCAPFLAGS, plCapability) を呼び出し、 LINEADDRCAPFLAGS_ 定数のメンバーであるフラグ LINEADDRCAPFLAGS_FWDCONSULTplCapability に設定されているかどうかを確認することで、NULL 以外の相談通話が必要かどうかを判断できます。設定されている場合は、 Forward メソッドの pCall パラメーターに NULL 以外の値が必要です。

Forward メソッドは、部分的には TAPI 2.1 の LineForward 関数の COM ラッパーです。

vtbl 17 HRESULT get_CurrentForwardInfo(ITForwardInformation** ppForwardInfo)

get_CurrentForwardInfo メソッドは、現在の転送情報オブジェクトへのポインターを取得します。

ppForwardInfoITForwardInformation**outITForwardInformation インターフェイスへのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

意味
S_OK
メソッドは成功しました。
E_NOTIMPL
メソッドは実装されていません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
LINEERR_INVALPOINTER
ppForwardInfo パラメーターが有効なポインターではありません。

解説(Remarks)

TAPI は、ITAddress::get_ForwardInfo によって返される ITForwardInformation インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITForwardInformation インターフェイスに対して Release を呼び出す必要があります。

vtbl 18 HRESULT put_MessageWaiting(VARIANT_BOOL fMessageWaiting)

put_MessageWaiting メソッドは、アドレスのメッセージ待機の状態を設定します。

fMessageWaitingVARIANT_BOOLin設定するメッセージ待機の状態。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

リターンコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
fMessageWaiting パラメーターが有効ではありません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
TAPI_E_TIMEOUT
TAPI 3 DLL がタイムアウトさせたため、操作は失敗しました。タイムアウト間隔は 2 分です。

解説(Remarks)

TAPI 2.x: に精通しているプログラマー向け: このメソッドは、 lineSetLineDevStatus を呼び出すことで、 LINEDEVSTATUS 構造体の dwDevStatusFlags メンバーにあるフラグ LINEDEVSTATUSFLAGS_MSGWAIT のオン/オフを切り替えます。

vtbl 19 HRESULT get_MessageWaiting(VARIANT_BOOL* pfMessageWaiting)

get_MessageWaiting メソッドは、アドレスにメッセージが待機しているかどうかを判断します。

pfMessageWaitingVARIANT_BOOL*outVARIANT_TRUE が返された場合はメッセージが待機しており、VARIANT_FALSE が返された場合は待機しているメッセージはありません。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

リターンコード 説明
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
E_POINTER
pfMessageWaiting パラメーターが有効なポインターではありません。

解説(Remarks)

TAPI 2.x では、これは構造体 LINEDEVSTATUS のメンバー dwDevStatusFlags にフラグ LINEDEVSTATUSFLAGS_MSGWAIT が設定されているかどうかに対応します。

vtbl 20 HRESULT put_DoNotDisturb(VARIANT_BOOL fDoNotDisturb)

put_DoNotDisturb メソッドは、応答不可 (do not disturb) の状態を設定します。応答不可機能は、すべてのアドレスで利用できるとは限りません。

fDoNotDisturbVARIANT_BOOLinVARIANT_TRUE の場合、応答不可機能が有効になります。VARIANT_FALSE の場合、応答不可機能が無効になり、すべての転送がキャンセルされます。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

リターンコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
fDoNotDisturb パラメーターが有効なポインターではありません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
TAPI_E_TIMEOUT
TAPI 3 DLL がタイムアウトさせたため、操作は失敗しました。タイムアウト間隔は 2 分です。

解説(Remarks)

DoNotDisturb 機能は転送を使用して実装されています。 put_DoNotDisturbVARIANT_TRUE で呼び出されると、Tapi3.dll は、モードを LINEFORWARDMODE_UNCOND に設定し、宛先アドレスを NULL に設定した LINEFORWARD 項目を 1 つだけ持つ LINEFORWARD リストを作成します。 put_DoNotDisturbVARIANT_FALSE で呼び出されると、Tapi3.dll は、 ITAddress::Forward で設定された転送ルールも含め、このアドレスの転送を完全にキャンセルします。

vtbl 21 HRESULT get_DoNotDisturb(VARIANT_BOOL* pfDoNotDisturb)

get_DoNotDisturb メソッドは、アドレスにおける応答不可 (do not disturb) 機能の現在の状態を取得します。応答不可機能は、すべてのアドレスで利用できるとは限りません。

pfDoNotDisturbVARIANT_BOOL*outVARIANT_TRUE の場合、応答不可機能が有効になっています。VARIANT_FALSE の場合、応答不可機能は有効ではありません。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

リターンコード 説明
S_OK
メソッドは成功しました。
E_OPERATIONUNAVAIL
操作は利用できません。
TAPI_E_NOTSUPPORTED
この操作はこのアドレスではサポートされていません。
E_POINTER
pfDoNotDisturb パラメーターが有効なポインターではありません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。

解説(Remarks)

TAPI 2.x: に精通しているプログラマー向け: DoNotDisturb 機能は、アドレスに存在する場合、"forward" 機能を使用して実装されます。 get_DoNotDisturb が呼び出されると、Tapi3.dll はアドレスオブジェクトの LINEADDRESSSTATUS を取得し、その LINEFORWARD エントリを探します。そのようなエントリが 1 つ見つかり、その dwDestAddressOffset メンバーが 0 (ゼロ) の場合、DoNotDisturb はオンになっているとみなされ、したがってこのメソッドの値として VARIANT_TRUE が返されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 不要)。