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

ITPhone

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID09d48db4-10cc-4388-9de7-a8465618975a継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

ITPhone インターフェイスは、TAPI 3.1 オブジェクトモデルにおける新しい Phone オブジェクトのメインインターフェイスです。

メソッド 33

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

vtbl 7 HRESULT Open(PHONE_PRIVILEGE Privilege)

Open メソッドは、この電話デバイスを開きます。電話デバイスは、アプリケーションが ITPhone::Close を呼び出すか、TAPI がシャットダウンされるまで開いた状態のままになります。

PrivilegePHONE_PRIVILEGEin電話デバイスに対するアプリケーションの権限状態を表す PHONE_PRIVILEGE 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

電話が開いている間、アプリケーションはその電話に関するイベントを受信します。

また、アプリケーションが電話の状態を設定するには、電話が所有者権限で開かれている必要があります。電話の状態の照会は、通常、電話が開いていなくても実行できます。詳細については、 ITPhone インターフェイスの各メソッドを参照してください。

vtbl 8 HRESULT Close()

Close メソッドは、この電話デバイスを閉じます。電話デバイスは、アプリケーションが ITPhone::Open メソッドを呼び出すまで閉じた状態のままになります。詳細については、以下の「解説」セクションを参照してください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

電話が閉じている間、アプリケーションはその電話に関するイベントを受信しません。

アプリケーションが電話の状態を設定するには、電話が所有者権限で開かれている必要があります。電話の状態の照会は、通常、電話が開いていなくても実行できます。詳細については、 ITPhone インターフェイスの各メソッドを参照してください。

電話デバイスが正常に閉じられた後は、この Phone オブジェクトに対して取得した ITAutomatedPhoneControl インターフェイスポインターは無効になります。

vtbl 9 HRESULT get_Addresses(VARIANT* pAddresses)

get_Addresses メソッドは、電話が使用できるアドレスのコレクションを返します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。

pAddressesVARIANT*outITAddress インターフェイスポインターの ITCollection を格納した VARIANT へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

電話デバイスは、TSP が PHONECAPS 構造体の dwPhoneFeatures メンバーに PHONEFEATURE_GENERICPHONE ビットを設定することで、オーディオターミナルをサポートするすべてのアドレスで使用可能であることを宣言します。また、電話デバイスは、デバイスクラス tapi/line を指定して phoneGetID を使用してアドレス/ライン ID を返すことで、特定のアドレスまたはアドレスの集合に対して優先されることを宣言することもできます。get_Addresses メソッドは、これら両方の方法で識別されたアドレスを返します。

電話が優先されるアドレスのみを取得するには、 get_PreferredAddresses メソッドを呼び出します。

get_Addresses を呼び出す前に、アプリケーションが ITPhone::Open メソッドを呼び出す必要はありません。これは、Phone オブジェクトの実装が、TAPI の初期化時や新しい Phone オブジェクトが現れたときに、電話を開いて phoneGetID を呼び出すことができるためです。

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

vtbl 10 HRESULT EnumerateAddresses(IEnumAddress** ppEnumAddress)

EnumerateAddresses メソッドは、電話が使用できるアドレスを列挙します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。

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

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

アドレスで使用できる電話がない場合、このメソッドは空の列挙を生成し、S_OK を返します。

電話デバイスは、TSP が PHONECAPS 構造体の dwPhoneFeatures メンバーに PHONEFEATURE_GENERICPHONE ビットを設定することで、オーディオターミナルをサポートするすべてのアドレスで使用可能であることを宣言します。また、電話デバイスは、デバイスクラス tapi/line を指定して phoneGetID を使用してアドレス/ライン ID を返すことで、特定のアドレスまたはアドレスの集合に対して優先されることを宣言することもできます。EnumerateAddresses メソッドは、これら両方の方法で識別されたアドレスを返します。

電話が優先されるアドレスのみを取得するには、 EnumeratePreferredAddresses メソッドを呼び出します。

電話デバイスは、デバイスクラス tapi/line を指定して phoneGetID を使用してアドレス/ライン ID を返すことで、特定のアドレスまたはアドレスの集合に固有であることを宣言します。phoneGetID 関数は開いている電話デバイスへのハンドルを必要としますが、 EnumerateAddresses を呼び出す前に、アプリケーションが ITPhone::Open メソッドを呼び出す必要はありません。これは、Phone オブジェクトの実装が、TAPI の初期化時や新しい Phone オブジェクトが現れたときに、電話を開いて phoneGetID を呼び出すことができるためです。

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

vtbl 11 HRESULT get_PhoneCapsLong(PHONECAPS_LONG pclCap, INT* plCapability)

get_PhoneCapsLong メソッドは、渡された PHONECAPS_LONG 列挙型に基づいて、電話の DWORD 型の機能を取得します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。

pclCapPHONECAPS_LONGin電話の機能を表す PHONECAPS_LONG 記述子。
plCapabilityINT*out機能の値。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 12 HRESULT get_PhoneCapsString(PHONECAPS_STRING pcsCap, LPWSTR* ppCapability)

get_PhoneCapsString メソッドは、渡された PHONECAPS_STRING 列挙型に基づいて、電話に関する文字列型の機能/情報を取得します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。

pcsCapPHONECAPS_STRINGin電話の機能を表す PHONECAPS_STRING 記述子。
ppCapabilityLPWSTR*out機能の値。BSTRSysAllocString を使用して割り当てられます。BSTR 引数はクライアントが解放する必要があります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 13 HRESULT get_Terminals(ITAddress* pAddress, VARIANT* pTerminals)

get_Terminals メソッドは、電話に関連付けられているターミナルのコレクションを取得します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。

pAddressITAddress*inITAddress インターフェイスへのポインター。
pTerminalsVARIANT*outITTerminal インターフェイスポインターの ITCollection を格納した VARIANT へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

電話にターミナルが関連付けられていない場合、このメソッドは空のコレクションを生成し、S_OK を返します。

get_Terminals を呼び出す前に、アプリケーションが ITPhone::Open メソッドを呼び出す必要はありません。これは、Phone オブジェクトの実装が、TAPI の初期化時や新しい Phone オブジェクトが現れたときに、電話を開いて phoneGetID を呼び出すことができるためです。

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

vtbl 14 HRESULT EnumerateTerminals(ITAddress* pAddress, IEnumTerminal** ppEnumTerminal)

EnumerateTerminals メソッドは、電話に関連付けられているターミナルの列挙を取得します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。

pAddressITAddress*inITAddress インターフェイスへのポインター。
ppEnumTerminalIEnumTerminal**outターミナルを列挙する IEnumTerminal インターフェイスへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

電話にターミナルが関連付けられていない場合、このメソッドは空の列挙を生成し、S_OK を返します。

phoneGetID 関数は開いている電話デバイスへのハンドルを必要としますが、 EnumerateTerminals を呼び出す前に、アプリケーションが ITPhone::Open メソッドを呼び出す必要はありません。これは、Phone オブジェクトの実装が、TAPI の初期化時や新しい Phone オブジェクトが現れたときに、電話を開いて phoneGetID を呼び出すことができるためです。

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

vtbl 15 HRESULT get_ButtonMode(INT lButtonID, PHONE_BUTTON_MODE* pButtonMode)

get_ButtonMode メソッドは、特定のボタンに関連付けられているボタンモードを取得します。

lButtonIDINTinボタン識別子。詳細については、以下の「解説」セクションを参照してください。
pButtonModePHONE_BUTTON_MODE*outボタンのモードを表す PHONE_BUTTON_MODE 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

ボタンモードの詳細については、 PHONE_BUTTON_MODE 列挙型の説明および TAPI 2.x のドキュメントを参照してください。

特に、次の 2 つの PHONE_BUTTON_MODE 値が重要です。

  1. PHONE_BUTTON_MODE 値が PBM_FEATURE の場合、アプリケーションはボタンの具体的な意味を取得するために get_ButtonFunction を呼び出す必要があります。
  2. PHONE_BUTTON_MODE 値が PBM_KEYPAD の場合、そのボタンはキーパッドボタンであり、その値は lButtonID パラメーターの値によって示されます。たとえば、lButtonID == 10 の場合、そのボタンはキーパッドの * (スター) キーです。
vtbl 16 HRESULT put_ButtonMode(INT lButtonID, PHONE_BUTTON_MODE ButtonMode)

put_ButtonMode メソッドは、ボタンモードを設定します。

lButtonIDINTinボタン識別子。
ButtonModePHONE_BUTTON_MODEinボタンのモードを表す PHONE_BUTTON_MODE 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 17 HRESULT get_ButtonFunction(INT lButtonID, PHONE_BUTTON_FUNCTION* pButtonFunction)

get_ButtonFunction メソッドは、特定のボタンに関連付けられているボタン機能を取得します。

lButtonIDINTinボタン識別子。
pButtonFunctionPHONE_BUTTON_FUNCTION*outボタンの機能を表す PHONE_BUTTON_FUNCTION 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

指定可能なボタン機能の一覧については、 PHONE_BUTTON_FUNCTION 列挙型の説明を参照してください。

vtbl 18 HRESULT put_ButtonFunction(INT lButtonID, PHONE_BUTTON_FUNCTION ButtonFunction)

put_ButtonFunction メソッドは、ボタン機能を設定します。

lButtonIDINTinボタン識別子。
ButtonFunctionPHONE_BUTTON_FUNCTIONinボタンの機能を表す PHONE_BUTTON_FUNCTION 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 19 HRESULT get_ButtonText(INT lButtonID, LPWSTR* ppButtonText)

get_ButtonText メソッドは、特定のボタンに関連付けられているボタンテキストを取得します。

lButtonIDINTinボタン識別子。
ppButtonTextLPWSTR*outボタンテキストの BSTR 表現。BSTRSysAllocString を使用して割り当てられます。BSTR 引数はクライアントが解放する必要があります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 20 HRESULT put_ButtonText(INT lButtonID, LPWSTR bstrButtonText)

put_ButtonText メソッドは、ボタンテキストを設定します。

lButtonIDINTinボタン識別子。
bstrButtonTextLPWSTRinボタンテキストの BSTR 表現。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 21 HRESULT get_ButtonState(INT lButtonID, PHONE_BUTTON_STATE* pButtonState)

get_ButtonState メソッドは、特定のボタンに関連付けられているボタン状態を取得します。

lButtonIDINTinボタン識別子。
pButtonStatePHONE_BUTTON_STATE*outボタンの状態を表す PHONE_BUTTON_STATE 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 22 HRESULT get_HookSwitchState(PHONE_HOOK_SWITCH_DEVICE HookSwitchDevice, PHONE_HOOK_SWITCH_STATE* pHookSwitchState)

get_HookSwitchState メソッドは、電話上の特定のフックスイッチデバイスの現在のフックスイッチ状態を取得します。

HookSwitchDevicePHONE_HOOK_SWITCH_DEVICEinフックスイッチの種類を表す PHONE_HOOK_SWITCH_DEVICE 記述子。
pHookSwitchStatePHONE_HOOK_SWITCH_STATE*outフックスイッチの状態を表す PHONE_HOOK_SWITCH_STATE 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 23 HRESULT put_HookSwitchState(PHONE_HOOK_SWITCH_DEVICE HookSwitchDevice, PHONE_HOOK_SWITCH_STATE HookSwitchState)

put_HookSwitchState メソッドは、電話上の特定のフックスイッチデバイスの現在のフックスイッチ状態を設定します。

HookSwitchDevicePHONE_HOOK_SWITCH_DEVICEinフックスイッチの種類を表す PHONE_HOOK_SWITCH_DEVICE 記述子。
HookSwitchStatePHONE_HOOK_SWITCH_STATEinフックスイッチの状態を表す PHONE_HOOK_SWITCH_STATE 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

通常、スピーカーフォンやヘッドセットはアプリケーションから設定可能なフックスイッチ状態を持ちますが、ハンドセットは持ちません。ただし、この機能は TSP に依存します。

vtbl 24 HRESULT put_RingMode(INT lRingMode)

put_RingMode メソッドは、電話に対して呼び出し音モードの変更を要求します。

lRingModeINTin呼び出し音モード。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 25 HRESULT get_RingMode(INT* plRingMode)

get_RingMode メソッドは、電話の現在の呼び出し音モードを取得します。

plRingModeINT*out電話の呼び出し音モード。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 26 HRESULT put_RingVolume(INT lRingVolume)

put_RingVolume メソッドは、電話に対して呼び出し音の音量の変更を要求します。

lRingVolumeINTin電話の音量。詳細については、以下の「解説」セクションを参照してください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

電話が現在鳴っている場合 (RingMode != 0)、新しい音量は直ちに反映されます。電話が現在鳴っていない場合 (RingMode == 0)、新しい音量は次に電話が鳴るときに反映されます。

vtbl 27 HRESULT get_RingVolume(INT* plRingVolume)

get_RingVolume メソッドは、電話の現在の呼び出し音の音量を取得します。

plRingVolumeINT*out呼び出し音の音量。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 28 HRESULT get_Privilege(PHONE_PRIVILEGE* pPrivilege)

get_Privilege メソッドは、開いている電話の権限を取得します。

pPrivilegePHONE_PRIVILEGE*out電話デバイスに対するアプリケーションの権限状態を表す PHONE_PRIVILEGE 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 29 HRESULT GetPhoneCapsBuffer(PHONECAPS_BUFFER pcbCaps, DWORD* pdwSize, BYTE** ppPhoneCapsBuffer)

GetPhoneCapsBuffer メソッドは、渡された PHONECAPS_BUFFER 列挙型に基づいて、電話に関するバッファー型の機能/情報を取得します。

pcbCapsPHONECAPS_BUFFERin電話の機能を表す PHONECAPS_BUFFER 記述子。
pdwSizeDWORD*outバッファーのサイズ (バイト単位)。
ppPhoneCapsBufferBYTE**out値を格納したバッファーへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 30 HRESULT get_PhoneCapsBuffer(PHONECAPS_BUFFER pcbCaps, VARIANT* pVarBuffer)

get_PhoneCapsBuffer メソッドは、渡された PHONECAPS_BUFFER 列挙型に基づいて、電話に関するバッファー型の機能/情報を取得します。

pcbCapsPHONECAPS_BUFFERin電話の機能を表す PHONECAPS_BUFFER 記述子。
pVarBufferVARIANT*out機能の値を格納した VARIANT へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 31 HRESULT get_LampMode(INT lLampID, PHONE_LAMP_MODE* pLampMode)

get_LampMode メソッドは、指定されたランプの現在のランプモードを取得します。

lLampIDINTinランプ識別子。
pLampModePHONE_LAMP_MODE*out電話のランプ状態を表す PHONE_LAMP_MODE 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 32 HRESULT put_LampMode(INT lLampID, PHONE_LAMP_MODE LampMode)

put_LampMode メソッドは、指定されたランプの現在のランプモードを設定します。

lLampIDINTinランプ識別子。
LampModePHONE_LAMP_MODEin電話のランプ状態を表す PHONE_LAMP_MODE 記述子。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 33 HRESULT get_Display(LPWSTR* pbstrDisplay)

get_Display メソッドは、電話のディスプレイを取得します。TAPI では、ディスプレイは単純に N×M の文字バッファーです。

pbstrDisplayLPWSTR*out電話ディスプレイの BSTR 表現。BSTRSysAllocString を使用して割り当てられます。BSTR 引数はクライアントが解放する必要があります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 34 HRESULT SetDisplay(INT lRow, INT lColumn, LPWSTR bstrDisplay)

SetDisplay メソッドは、電話のディスプレイの指定された行と列に表示される内容を設定します。

lRowINTinディスプレイの行。
lColumnINTinディスプレイの列。
bstrDisplayLPWSTRin表示する値の BSTR 表現。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 35 HRESULT get_PreferredAddresses(VARIANT* pAddresses)

get_PreferredAddresses メソッドは、電話が優先的に使用されるアドレスのコレクションを返します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。

pAddressesVARIANT*outITAddress インターフェイスポインターの ITCollection を格納した VARIANT へのポインター。

戻り値

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

意味
S_OK
メソッドが成功しました。
E_POINTER
pAddresses パラメーターが有効なポインターではありません。
E_OUTOFMEMORY
コレクションオブジェクトを割り当てるのに十分なメモリがありません。

解説(Remarks)

システムに使用可能なアドレスが存在しない場合、このメソッドは空のコレクションを返します。

電話デバイスは、デバイスクラス tapi/line を指定して TAPI 2.x の phoneGetID 関数を使用してアドレス/ライン ID を返すことで、特定のアドレスまたはアドレスの集合に対して優先されることを宣言します。

phoneGetID 関数は開いている電話デバイスへのハンドルを必要としますが、 EnumeratePreferredAddresses を呼び出す前に、アプリケーションが ITPhone::Open メソッドを呼び出す必要はありません。これは、Phone オブジェクトの実装が、TAPI の初期化時や新しい Phone オブジェクトが現れたときに、電話を開いて phoneGetID を呼び出すことができるためです。

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

vtbl 36 HRESULT EnumeratePreferredAddresses(IEnumAddress** ppEnumAddress)

EnumeratePreferredAddresses メソッドは、Phone オブジェクトの優先アドレスを列挙します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。

ppEnumAddressIEnumAddress**out成功した場合に、メソッドがアドレスのリストを格納する列挙オブジェクトへのポインターを配置する場所へのポインター。詳細については、以下の「解説」セクションを参照してください。

戻り値

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

意味
S_OK
メソッドが成功しました。
E_POINTER
ppEnumAddress パラメーターが有効なポインターではありません。
E_OUTOFMEMORY
列挙オブジェクトを割り当てるのに十分なメモリがありません。

解説(Remarks)

システムに使用可能なアドレスが存在しない場合、このメソッドは空の列挙を生成し、S_OK を返します。

電話デバイスは、デバイスクラス tapi/line を指定して TAPI 2.x の phoneGetID 関数を使用してアドレス/ライン ID を返すことで、特定のアドレスまたはアドレスの集合に対して優先されることを宣言します。

phoneGetID 関数は開いている電話デバイスへのハンドルを必要としますが、 EnumeratePreferredAddresses を呼び出す前に、アプリケーションが ITPhone::Open メソッドを呼び出す必要はありません。これは、Phone オブジェクトの実装が、TAPI の初期化時や新しい Phone オブジェクトが現れたときに、電話を開いて phoneGetID を呼び出すことができるためです。

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

vtbl 37 HRESULT DeviceSpecific(BYTE* pParams, DWORD dwSize)

DeviceSpecific メソッドは、サービスプロバイダーが他の TAPI 関数では提供されないデバイス固有の機能へのアクセスを提供できるようにします。

pParamsBYTE*inパラメーターブロックを保持するために使用されるメモリ領域へのポインター。このパラメーターブロックの形式はデバイス固有であり、TAPI はその内容をアプリケーションとサービスプロバイダーの間で受け渡します。
dwSizeDWORDinパラメーターブロック領域のサイズ (バイト単位)。

戻り値

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

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

解説(Remarks)

注意

TAPI は、LINE_REPLY メッセージが返されるときに、pParams が参照するバッファーに返されたデータを書き込みます。これは、LINE_REPLY メッセージが返されるまでバッファーが有効なままである必要があることを意味します。そうでない場合、データの破損や例外が発生する可能性があります。

vtbl 38 HRESULT DeviceSpecificVariant(VARIANT varDevSpecificByteArray)

DeviceSpecificVariant メソッドは、サービスプロバイダーが他の TAPI 関数では提供されない機能へのアクセスを提供できるようにします。(ITPhone.DeviceSpecificVariant)

varDevSpecificByteArrayVARIANTinパラメーターブロックを格納した VARIANT。このパラメーターブロックの形式はデバイス固有であり、TAPI はその内容をアプリケーションとサービスプロバイダーの間で受け渡します。

戻り値

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

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

NegotiateExtVersion メソッドは、指定された電話デバイスで使用する拡張バージョンをアプリケーションがネゴシエートできるようにします。アプリケーションがプロバイダー固有の拡張をサポートしない場合、この操作を呼び出す必要はありません。

lLowVersionINTinアプリケーションが対応している、 NegotiateExtVersion が返す拡張識別子の最も古い拡張バージョン。上位ワードはメジャーバージョン番号、下位ワードはマイナーバージョン番号です。
lHighVersionINTinアプリケーションが対応している、 NegotiateExtVersion が返す拡張識別子の最も新しい拡張バージョン。上位ワードはメジャーバージョン番号、下位ワードはマイナーバージョン番号です。
plExtVersionINT*outネゴシエートされた拡張バージョン番号を格納する long へのポインター。ネゴシエーションが成功した場合、この番号は lLowVersionlHighVersion の範囲内になります。

戻り値

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

意味
S_OK
メソッドが成功しました。
E_INVALIDARG
lHighVersion または lLowVersion のバージョンが無効です。
E_OUTOFMEMORY
操作を実行するのに十分なメモリがありません。
E_POINTER
plExtVersion パラメーターが有効なポインターではありません。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 不要)。