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

ITTAPI

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

公式ドキュメント

ITTAPI インターフェイスは、TAPI オブジェクトの基本インターフェイスです。TAPI オブジェクトは CoCreateInstance によって作成されます。CoCreateInstance の詳細については、COM のドキュメントを参照してください。その他のすべての TAPI 3 オブジェクトは、TAPI 3 自体によって作成されます。

メソッド 16

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

vtbl 7 HRESULT Initialize()

Initialize メソッドは TAPI を初期化します。このメソッドは、他の TAPI 3 メソッドを呼び出す前に呼び出す必要があります。アプリケーションは、TAPI セッションを終了するときに Shutdown メソッドを呼び出す必要があります。

戻り値

このメソッドは次の値のいずれかを返します。

リターンコード 説明
S_OK
メソッドは成功しました。
S_FALSE
TAPI は既に初期化されています。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
vtbl 8 HRESULT Shutdown()

Shutdown メソッドは TAPI セッションをシャットダウンします。

戻り値

このメソッドは次の値のいずれかを返します。

リターンコード 説明
S_OK
メソッドは成功しました。
S_FALSE
TAPI セッションは既にシャットダウンされています。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。

解説(Remarks)

Shutdown が失敗する理由の 1 つは、事前に Initialize が正常に呼び出されていなかった場合です。

vtbl 9 HRESULT get_Addresses(VARIANT* pVariant)

get_Addresses メソッドは、現在利用可能なアドレスのコレクションを作成します。Visual Basic で記述されたものなど、オートメーションクライアントアプリケーション向けに提供されています。C および C++ アプリケーションは EnumerateAddresses メソッドを使用する必要があります。

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

戻り値

このメソッドは次の値のいずれかを返します。

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

解説(Remarks)

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

vtbl 10 HRESULT EnumerateAddresses(IEnumAddress** ppEnumAddress)

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

ppEnumAddressIEnumAddress**outIEnumAddress インターフェイスへのポインター。

戻り値

このメソッドは次の値のいずれかを返します。

意味
S_OK
メソッドは成功しました。
E_POINTER
ppEnumAddress パラメーターが有効なポインターではありません。
E_INVALIDARG
TAPI オブジェクトが初期化されていません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。

解説(Remarks)

アプリケーションは通常、この列挙を使用して各アドレスの機能を確認し、現在の目的に有用なものを判断します。

想定していたアドレスが見つからない場合は、適切なサービスプロバイダーがインストールされていないか、正しく動作していない可能性があります。

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

TAPI セッション中にアドレスが作成または削除された場合、アプリケーションは ITTAPIEventNotification インターフェイスを通じて通知されます。プラグアンドプレイデバイスのインストールなどによってアドレスが作成された場合、 ITTAPIEventNotification::EventTAPIOBJECT_EVENT 列挙型の TE_ADDRESSCREATE メンバーを返します。アドレスが削除された場合、ITTAPIEventNotification::EventTE_ADDRESSREMOVE を返します。これらのイベントの後に EnumerateAddresses を呼び出すと、現在のアドレスが反映されます。

vtbl 11 HRESULT RegisterCallNotifications(ITAddress* pAddress, VARIANT_BOOL fMonitor, VARIANT_BOOL fOwner, INT lMediaTypes, INT lCallbackInstance, INT* plRegister)

RegisterCallNotifications メソッドは、アプリケーションが受信する新しい通話通知を設定します。アプリケーションは、処理できるメディアタイプを示し、要求する権限を指定して、アドレスごとにこのメソッドを呼び出す必要があります。

pAddressITAddress*inITAddress インターフェイスへのポインター。
fMonitorVARIANT_BOOLinアプリケーションが通話を監視するかどうかを示すブール値。VARIANT_TRUE はアプリケーションが通話を監視することを示し、VARIANT_FALSE は監視しないことを示します。
fOwnerVARIANT_BOOLinアプリケーションが着信通話を所有するかどうかを示すブール値。VARIANT_TRUE はアプリケーションが着信通話を所有することを示し、VARIANT_FALSE は所有しないことを示します。
lMediaTypesINTinアプリケーションが処理できる メディアタイプ
lCallbackInstanceINTinTAPI 3 DLL によって使用されるコールバックインスタンス。 ITTAPIEventNotification 送信インターフェイスの登録時に IConnectionPoint::Advise によって返される gulAdvise 値を指定できます。
plRegisterINT*out成功した場合に、 ITTAPI::UnregisterNotifications によって使用される戻り値。

戻り値

このメソッドは次の値のいずれかを返します。

リターンコード 説明
S_OK
メソッドは成功しました。
E_POINTER
plRegister パラメーターが有効なポインターではありません。
TAPI_E_NOT_INITIALIZED
TAPI オブジェクトが初期化されていません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。

解説(Remarks)

このメソッドが 1 つのアドレスに対して複数回呼び出された場合、アプリケーションが既に監視している通話がそのアプリケーションにハンドオフされると、コールハブからの参加者通話に関する情報が混乱を招くことがあります。

RegisterCallNotifications メソッドは、指定されたメディアタイプの通話の監視、またはその所有権の受け取りに関心があるものとして、アプリケーションを登録します。これらの通話権限は fMonitor および fOwner パラメーターで設定されます。 アプリケーションは、複数のメディアタイプを処理するために複数のフラグを指定できます。複数のアプリケーションが同じアドレスおよびメディアタイプに対して登録すると、競合が発生する可能性があります。これらの競合は、ユーザーがアプリケーションに相対的な優先順位を割り当てる優先順位方式によって解決されます。ユーザーは ITTAPI::SetApplicationPriority 関数を呼び出すことで、アプリケーションの優先順位を設定できます。特定のメディアタイプに対して最も優先順位の高いアプリケーションのみが、そのメディアタイプの通話の所有権を(要求せずに)受け取ります。所有権は、着信通話が最初に到着したとき、または通話がハンドオフされたときに受け取ることができます。通話の所有権を別のアプリケーションにハンドオフするには、ITBasicCallControl::HandoffDirect および ITBasicCallControl::HandoffIndirect 関数が呼び出されます。ユーザーがアプリケーションに優先順位を割り当てず、複数のアプリケーションが同じ回線デバイスを開いた場合、既定では、最初に RegisterCallNotifications を呼び出したアプリケーションが最も高い優先順位を持ちます。

vtbl 12 HRESULT UnregisterNotifications(INT lRegister)

UnregisterNotifications メソッドは、ITTAPI::RegisterCallNotifications を使用して行われた着信通話通知の登録をすべて削除します。

lRegisterINTinRegisterCallNotifications メソッドが plRegister パラメーターで返した値。

戻り値

このメソッドは次の値のいずれかを返します。

意味
S_OK
メソッドは成功しました。
E_INVALIDARG
TAPI オブジェクトがまだ初期化されていないか、lRegister パラメーターが無効です。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
vtbl 13 HRESULT get_CallHubs(VARIANT* pVariant)

get_CallHubs メソッドは、現在利用可能なコールハブのコレクションを作成します。Visual Basic で記述されたものなど、オートメーションクライアントアプリケーション向けに提供されています。C および C++ アプリケーションは EnumerateCallHubs メソッドを使用する必要があります。

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

戻り値

このメソッドは次の値のいずれかを返します。

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

解説(Remarks)

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

vtbl 14 HRESULT EnumerateCallHubs(IEnumCallHub** ppEnumCallHub)

EnumerateCallHubs メソッドは、現在利用可能なコールハブを列挙します。C および C++ アプリケーション向けに提供されています。Visual Basic で記述されたものなど、オートメーションクライアントアプリケーションは get_Callhubs メソッドを使用する必要があります。

ppEnumCallHubIEnumCallHub**outIEnumCallHub インターフェイスへのポインター。

戻り値

このメソッドは次の値のいずれかを返します。

意味
S_OK
メソッドは成功しました。
E_POINTER
ppEnumCallHub パラメーターが有効なポインターではありません。
E_INVALIDARG
TAPI オブジェクトが初期化されていません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。

解説(Remarks)

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

vtbl 15 HRESULT SetCallHubTracking(VARIANT pAddresses, VARIANT_BOOL bTracking)

SetCallHubTracking メソッドは、CallHub トラッキングを有効または無効にします。

pAddressesVARIANTinITAddress インターフェイスポインターの SAFEARRAY を格納する VARIANT へのポインター。
bTrackingVARIANT_BOOLinトラッキングを有効にするには VARIANT_TRUE、無効にするには VARIANT_FALSE を指定します。

戻り値

このメソッドは次の値のいずれかを返します。

リターンコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
TAPI オブジェクトが初期化されていません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
vtbl 16 HRESULT EnumeratePrivateTAPIObjects(IEnumUnknown** ppEnumUnknown)

ITTAPI インターフェイスの EnumeratePrivateTAPIObjects メソッドは実装されておらず、E_NOTIMPL を返します。

ppEnumUnknownIEnumUnknown**outこのメソッドは実装されていません。

戻り値

このメソッドは値を返しません。

vtbl 17 HRESULT get_PrivateTAPIObjects(VARIANT* pVariant)

ITTAPI インターフェイスの get_PrivateTAPIObjects メソッドは実装されておらず、E_NOTIMPL を返します。

pVariantVARIANT*outこのメソッドは実装されていません。

戻り値

このメソッドは値を返しません。

vtbl 18 HRESULT RegisterRequestRecipient(INT lRegistrationInstance, INT lRequestMode, VARIANT_BOOL fEnable)

RegisterRequestRecipient メソッドは、アシステッドテレフォニー要求を処理する適切なものとして、アプリケーションインスタンスを登録します。

lRegistrationInstanceINTin登録インスタンスへのポインター。
lRequestModeINTin要求モード。
fEnableVARIANT_BOOLinVARIANT_TRUE は、呼び出し元がハンドラーとして登録することを示します。VARIANT_FALSE は、ハンドラーとしての登録を解除することを示します。

戻り値

このメソッドは次の値のいずれかを返します。

リターンコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
TAPI オブジェクトが初期化されていません。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
vtbl 19 HRESULT SetAssistedTelephonyPriority(LPWSTR pAppFilename, VARIANT_BOOL fPriority)

SetAssistedTelephonyPriority メソッドは、アシステッドテレフォニー要求を処理するアプリケーションの優先順位を設定します。

pAppFilenameLPWSTRinアプリケーションの名前を格納する BSTR へのポインター。
fPriorityVARIANT_BOOLin無効にするには VARIANT_FALSE、有効にするには VARIANT_TRUE を設定します。

戻り値

このメソッドは次の値のいずれかを返します。

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

解説(Remarks)

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

vtbl 20 HRESULT SetApplicationPriority(LPWSTR pAppFilename, INT lMediaType, VARIANT_BOOL fPriority)

SetApplicationPriority メソッドを使用すると、アプリケーションは特定のメディアタイプまたはアシステッドテレフォニー要求モードのハンドオフ優先順位リスト内で自身の優先順位を設定したり、優先順位リストから自身を削除したりできます。

pAppFilenameLPWSTRinアプリケーションの名前を格納する BSTR へのポインター。
lMediaTypeINTinアプリケーションに関連付けられたメディア。
fPriorityVARIANT_BOOLinアプリケーションの新しい優先順位。VARIANT_FALSE の値が渡された場合、アプリケーションは指定されたメディアまたは要求モードの優先順位リストから削除されます(既に存在しなかった場合でも、エラーは生成されません)。VARIANT_TRUE の値が渡された場合、アプリケーションはそのメディアまたは要求モードで最も優先順位の高いアプリケーションとして挿入されます(既にリスト内にあった場合は、より低い優先順位の位置から削除されます)。

戻り値

このメソッドは次の値のいずれかを返します。

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

解説(Remarks)

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

SetApplicationPriority で設定された優先順位は、システムの再起動や tapisrv の再起動をまたいで保持されます。ITTAPI::RegisterCallNotifications 関数は、通話の優先順位を指定せずに回線を開きます。既定では、最も優先順位の高いアプリケーションは、最初に ITTAPI::RegisterCallNotifications を呼び出したものになります。

vtbl 21 HRESULT put_EventFilter(INT lFilterMask)

put_EventFilter メソッドは、イベントフィルターマスクを設定します。このマスクは、TAPI_EVENT 列挙型のメンバーを OR 演算で連結したものです。

lFilterMaskINTinイベントフィルターマスク。

戻り値

このメソッドは次の値のいずれかを返します。

リターンコード 説明
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
vtbl 22 HRESULT get_EventFilter(INT* plFilterMask)

get_EventFilter メソッドは、現在のイベントフィルターマスクを取得します。このマスクは、TAPI_EVENT 列挙型のメンバーを OR 演算で連結したものです。

plFilterMaskINT*outイベントフィルターマスクへのポインター。

戻り値

このメソッドは次の値のいずれかを返します。

リターンコード 説明
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ITTAPI "{B1EFC382-9355-11D0-835C-00AA003CCABD}"
#usecom global ITTAPI IID_ITTAPI "{}"
#comfunc global ITTAPI_Initialize                    7
#comfunc global ITTAPI_Shutdown                      8
#comfunc global ITTAPI_get_Addresses                 9 var
#comfunc global ITTAPI_EnumerateAddresses            10 sptr
#comfunc global ITTAPI_RegisterCallNotifications     11 sptr,int,int,int,int,var
#comfunc global ITTAPI_UnregisterNotifications       12 int
#comfunc global ITTAPI_get_CallHubs                  13 var
#comfunc global ITTAPI_EnumerateCallHubs             14 sptr
#comfunc global ITTAPI_SetCallHubTracking            15 int,int
#comfunc global ITTAPI_EnumeratePrivateTAPIObjects   16 sptr
#comfunc global ITTAPI_get_PrivateTAPIObjects        17 var
#comfunc global ITTAPI_RegisterRequestRecipient      18 int,int,int
#comfunc global ITTAPI_SetAssistedTelephonyPriority  19 wstr,int
#comfunc global ITTAPI_SetApplicationPriority        20 wstr,int,int
#comfunc global ITTAPI_put_EventFilter               21 int
#comfunc global ITTAPI_get_EventFilter               22 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。