ITPhone
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ITPhone インターフェイスは、TAPI 3.1 オブジェクトモデルにおける新しい Phone オブジェクトのメインインターフェイスです。
メソッド 33
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
Open メソッドは、この電話デバイスを開きます。電話デバイスは、アプリケーションが ITPhone::Close を呼び出すか、TAPI がシャットダウンされるまで開いた状態のままになります。
| Privilege | PHONE_PRIVILEGE | in | 電話デバイスに対するアプリケーションの権限状態を表す PHONE_PRIVILEGE 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
電話が開いている間、アプリケーションはその電話に関するイベントを受信します。
また、アプリケーションが電話の状態を設定するには、電話が所有者権限で開かれている必要があります。電話の状態の照会は、通常、電話が開いていなくても実行できます。詳細については、 ITPhone インターフェイスの各メソッドを参照してください。
Close メソッドは、この電話デバイスを閉じます。電話デバイスは、アプリケーションが ITPhone::Open メソッドを呼び出すまで閉じた状態のままになります。詳細については、以下の「解説」セクションを参照してください。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
電話が閉じている間、アプリケーションはその電話に関するイベントを受信しません。
アプリケーションが電話の状態を設定するには、電話が所有者権限で開かれている必要があります。電話の状態の照会は、通常、電話が開いていなくても実行できます。詳細については、 ITPhone インターフェイスの各メソッドを参照してください。
電話デバイスが正常に閉じられた後は、この Phone オブジェクトに対して取得した ITAutomatedPhoneControl インターフェイスポインターは無効になります。
get_Addresses メソッドは、電話が使用できるアドレスのコレクションを返します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。
| pAddresses | VARIANT* | out | ITAddress インターフェイスポインターの 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 を呼び出す必要があります。
EnumerateAddresses メソッドは、電話が使用できるアドレスを列挙します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。
| ppEnumAddress | IEnumAddress** | out | IEnumAddress インターフェイスへのポインター。 |
戻り値
このメソッドが成功した場合は 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 を呼び出す必要があります。
get_PhoneCapsLong メソッドは、渡された PHONECAPS_LONG 列挙型に基づいて、電話の DWORD 型の機能を取得します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。
| pclCap | PHONECAPS_LONG | in | 電話の機能を表す PHONECAPS_LONG 記述子。 |
| plCapability | INT* | out | 機能の値。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_PhoneCapsString メソッドは、渡された PHONECAPS_STRING 列挙型に基づいて、電話に関する文字列型の機能/情報を取得します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。
| pcsCap | PHONECAPS_STRING | in | 電話の機能を表す PHONECAPS_STRING 記述子。 |
| ppCapability | LPWSTR* | out | 機能の値。BSTR は SysAllocString を使用して割り当てられます。BSTR 引数はクライアントが解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_Terminals メソッドは、電話に関連付けられているターミナルのコレクションを取得します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。
| pAddress | ITAddress* | in | ITAddress インターフェイスへのポインター。 |
| pTerminals | VARIANT* | out | ITTerminal インターフェイスポインターの ITCollection を格納した VARIANT へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
電話にターミナルが関連付けられていない場合、このメソッドは空のコレクションを生成し、S_OK を返します。
get_Terminals を呼び出す前に、アプリケーションが ITPhone::Open メソッドを呼び出す必要はありません。これは、Phone オブジェクトの実装が、TAPI の初期化時や新しい Phone オブジェクトが現れたときに、電話を開いて phoneGetID を呼び出すことができるためです。
TAPI は、ITPhone::get_Terminals が返す ITAddress インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために、 ITAddress インターフェイスに対して Release を呼び出す必要があります。
EnumerateTerminals メソッドは、電話に関連付けられているターミナルの列挙を取得します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。
| pAddress | ITAddress* | in | ITAddress インターフェイスへのポインター。 |
| ppEnumTerminal | IEnumTerminal** | out | ターミナルを列挙する IEnumTerminal インターフェイスへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
電話にターミナルが関連付けられていない場合、このメソッドは空の列挙を生成し、S_OK を返します。
phoneGetID 関数は開いている電話デバイスへのハンドルを必要としますが、 EnumerateTerminals を呼び出す前に、アプリケーションが ITPhone::Open メソッドを呼び出す必要はありません。これは、Phone オブジェクトの実装が、TAPI の初期化時や新しい Phone オブジェクトが現れたときに、電話を開いて phoneGetID を呼び出すことができるためです。
TAPI は、ITPhone::EnumerateTerminals が返す IEnumTerminal インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために、 IEnumTerminal インターフェイスに対して Release を呼び出す必要があります。
get_ButtonMode メソッドは、特定のボタンに関連付けられているボタンモードを取得します。
| lButtonID | INT | in | ボタン識別子。詳細については、以下の「解説」セクションを参照してください。 |
| pButtonMode | PHONE_BUTTON_MODE* | out | ボタンのモードを表す PHONE_BUTTON_MODE 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ボタンモードの詳細については、 PHONE_BUTTON_MODE 列挙型の説明および TAPI 2.x のドキュメントを参照してください。
特に、次の 2 つの PHONE_BUTTON_MODE 値が重要です。
- PHONE_BUTTON_MODE 値が PBM_FEATURE の場合、アプリケーションはボタンの具体的な意味を取得するために get_ButtonFunction を呼び出す必要があります。
- PHONE_BUTTON_MODE 値が PBM_KEYPAD の場合、そのボタンはキーパッドボタンであり、その値は lButtonID パラメーターの値によって示されます。たとえば、lButtonID == 10 の場合、そのボタンはキーパッドの * (スター) キーです。
put_ButtonMode メソッドは、ボタンモードを設定します。
| lButtonID | INT | in | ボタン識別子。 |
| ButtonMode | PHONE_BUTTON_MODE | in | ボタンのモードを表す PHONE_BUTTON_MODE 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_ButtonFunction メソッドは、特定のボタンに関連付けられているボタン機能を取得します。
| lButtonID | INT | in | ボタン識別子。 |
| pButtonFunction | PHONE_BUTTON_FUNCTION* | out | ボタンの機能を表す PHONE_BUTTON_FUNCTION 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
指定可能なボタン機能の一覧については、 PHONE_BUTTON_FUNCTION 列挙型の説明を参照してください。
put_ButtonFunction メソッドは、ボタン機能を設定します。
| lButtonID | INT | in | ボタン識別子。 |
| ButtonFunction | PHONE_BUTTON_FUNCTION | in | ボタンの機能を表す PHONE_BUTTON_FUNCTION 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_ButtonText メソッドは、特定のボタンに関連付けられているボタンテキストを取得します。
| lButtonID | INT | in | ボタン識別子。 |
| ppButtonText | LPWSTR* | out | ボタンテキストの BSTR 表現。BSTR は SysAllocString を使用して割り当てられます。BSTR 引数はクライアントが解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_ButtonText メソッドは、ボタンテキストを設定します。
| lButtonID | INT | in | ボタン識別子。 |
| bstrButtonText | LPWSTR | in | ボタンテキストの BSTR 表現。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_ButtonState メソッドは、特定のボタンに関連付けられているボタン状態を取得します。
| lButtonID | INT | in | ボタン識別子。 |
| pButtonState | PHONE_BUTTON_STATE* | out | ボタンの状態を表す PHONE_BUTTON_STATE 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_HookSwitchState メソッドは、電話上の特定のフックスイッチデバイスの現在のフックスイッチ状態を取得します。
| HookSwitchDevice | PHONE_HOOK_SWITCH_DEVICE | in | フックスイッチの種類を表す PHONE_HOOK_SWITCH_DEVICE 記述子。 |
| pHookSwitchState | PHONE_HOOK_SWITCH_STATE* | out | フックスイッチの状態を表す PHONE_HOOK_SWITCH_STATE 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_HookSwitchState メソッドは、電話上の特定のフックスイッチデバイスの現在のフックスイッチ状態を設定します。
| HookSwitchDevice | PHONE_HOOK_SWITCH_DEVICE | in | フックスイッチの種類を表す PHONE_HOOK_SWITCH_DEVICE 記述子。 |
| HookSwitchState | PHONE_HOOK_SWITCH_STATE | in | フックスイッチの状態を表す PHONE_HOOK_SWITCH_STATE 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
通常、スピーカーフォンやヘッドセットはアプリケーションから設定可能なフックスイッチ状態を持ちますが、ハンドセットは持ちません。ただし、この機能は TSP に依存します。
put_RingMode メソッドは、電話に対して呼び出し音モードの変更を要求します。
| lRingMode | INT | in | 呼び出し音モード。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_RingMode メソッドは、電話の現在の呼び出し音モードを取得します。
| plRingMode | INT* | out | 電話の呼び出し音モード。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_RingVolume メソッドは、電話に対して呼び出し音の音量の変更を要求します。
| lRingVolume | INT | in | 電話の音量。詳細については、以下の「解説」セクションを参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
電話が現在鳴っている場合 (RingMode != 0)、新しい音量は直ちに反映されます。電話が現在鳴っていない場合 (RingMode == 0)、新しい音量は次に電話が鳴るときに反映されます。
get_RingVolume メソッドは、電話の現在の呼び出し音の音量を取得します。
| plRingVolume | INT* | out | 呼び出し音の音量。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_Privilege メソッドは、開いている電話の権限を取得します。
| pPrivilege | PHONE_PRIVILEGE* | out | 電話デバイスに対するアプリケーションの権限状態を表す PHONE_PRIVILEGE 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
GetPhoneCapsBuffer メソッドは、渡された PHONECAPS_BUFFER 列挙型に基づいて、電話に関するバッファー型の機能/情報を取得します。
| pcbCaps | PHONECAPS_BUFFER | in | 電話の機能を表す PHONECAPS_BUFFER 記述子。 |
| pdwSize | DWORD* | out | バッファーのサイズ (バイト単位)。 |
| ppPhoneCapsBuffer | BYTE** | out | 値を格納したバッファーへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_PhoneCapsBuffer メソッドは、渡された PHONECAPS_BUFFER 列挙型に基づいて、電話に関するバッファー型の機能/情報を取得します。
| pcbCaps | PHONECAPS_BUFFER | in | 電話の機能を表す PHONECAPS_BUFFER 記述子。 |
| pVarBuffer | VARIANT* | out | 機能の値を格納した VARIANT へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_LampMode メソッドは、指定されたランプの現在のランプモードを取得します。
| lLampID | INT | in | ランプ識別子。 |
| pLampMode | PHONE_LAMP_MODE* | out | 電話のランプ状態を表す PHONE_LAMP_MODE 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_LampMode メソッドは、指定されたランプの現在のランプモードを設定します。
| lLampID | INT | in | ランプ識別子。 |
| LampMode | PHONE_LAMP_MODE | in | 電話のランプ状態を表す PHONE_LAMP_MODE 記述子。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_Display メソッドは、電話のディスプレイを取得します。TAPI では、ディスプレイは単純に N×M の文字バッファーです。
| pbstrDisplay | LPWSTR* | out | 電話ディスプレイの BSTR 表現。BSTR は SysAllocString を使用して割り当てられます。BSTR 引数はクライアントが解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
SetDisplay メソッドは、電話のディスプレイの指定された行と列に表示される内容を設定します。
| lRow | INT | in | ディスプレイの行。 |
| lColumn | INT | in | ディスプレイの列。 |
| bstrDisplay | LPWSTR | in | 表示する値の BSTR 表現。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_PreferredAddresses メソッドは、電話が優先的に使用されるアドレスのコレクションを返します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。
| pAddresses | VARIANT* | out | ITAddress インターフェイスポインターの ITCollection を格納した VARIANT へのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドが成功しました。 | |
| pAddresses パラメーターが有効なポインターではありません。 | |
| コレクションオブジェクトを割り当てるのに十分なメモリがありません。 |
解説(Remarks)
システムに使用可能なアドレスが存在しない場合、このメソッドは空のコレクションを返します。
電話デバイスは、デバイスクラス tapi/line を指定して TAPI 2.x の phoneGetID 関数を使用してアドレス/ライン ID を返すことで、特定のアドレスまたはアドレスの集合に対して優先されることを宣言します。
phoneGetID 関数は開いている電話デバイスへのハンドルを必要としますが、 EnumeratePreferredAddresses を呼び出す前に、アプリケーションが ITPhone::Open メソッドを呼び出す必要はありません。これは、Phone オブジェクトの実装が、TAPI の初期化時や新しい Phone オブジェクトが現れたときに、電話を開いて phoneGetID を呼び出すことができるためです。
TAPI は、ITPhone::get_PreferredAddresses が返す ITAddress インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために、 ITAddress インターフェイスに対して Release を呼び出す必要があります。
EnumeratePreferredAddresses メソッドは、Phone オブジェクトの優先アドレスを列挙します。このメソッドを実行する前に、アプリケーションが ITPhone::Open を呼び出す必要はありません。
| ppEnumAddress | IEnumAddress** | out | 成功した場合に、メソッドがアドレスのリストを格納する列挙オブジェクトへのポインターを配置する場所へのポインター。詳細については、以下の「解説」セクションを参照してください。 |
戻り値
このメソッドは、次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドが成功しました。 | |
| ppEnumAddress パラメーターが有効なポインターではありません。 | |
| 列挙オブジェクトを割り当てるのに十分なメモリがありません。 |
解説(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 を呼び出す必要があります。
DeviceSpecific メソッドは、サービスプロバイダーが他の TAPI 関数では提供されないデバイス固有の機能へのアクセスを提供できるようにします。
| pParams | BYTE* | in | パラメーターブロックを保持するために使用されるメモリ領域へのポインター。このパラメーターブロックの形式はデバイス固有であり、TAPI はその内容をアプリケーションとサービスプロバイダーの間で受け渡します。 |
| dwSize | DWORD | in | パラメーターブロック領域のサイズ (バイト単位)。 |
戻り値
このメソッドは、次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| pParams パラメーターが有効なポインターではありません。 |
解説(Remarks)
TAPI は、LINE_REPLY メッセージが返されるときに、pParams が参照するバッファーに返されたデータを書き込みます。これは、LINE_REPLY メッセージが返されるまでバッファーが有効なままである必要があることを意味します。そうでない場合、データの破損や例外が発生する可能性があります。
DeviceSpecificVariant メソッドは、サービスプロバイダーが他の TAPI 関数では提供されない機能へのアクセスを提供できるようにします。(ITPhone.DeviceSpecificVariant)
| varDevSpecificByteArray | VARIANT | in | パラメーターブロックを格納した VARIANT。このパラメーターブロックの形式はデバイス固有であり、TAPI はその内容をアプリケーションとサービスプロバイダーの間で受け渡します。 |
戻り値
このメソッドは、次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
| メソッドが成功しました。 | |
| 操作を実行するのに十分なメモリがありません。 |
NegotiateExtVersion メソッドは、指定された電話デバイスで使用する拡張バージョンをアプリケーションがネゴシエートできるようにします。アプリケーションがプロバイダー固有の拡張をサポートしない場合、この操作を呼び出す必要はありません。
| lLowVersion | INT | in | アプリケーションが対応している、 NegotiateExtVersion が返す拡張識別子の最も古い拡張バージョン。上位ワードはメジャーバージョン番号、下位ワードはマイナーバージョン番号です。 |
| lHighVersion | INT | in | アプリケーションが対応している、 NegotiateExtVersion が返す拡張識別子の最も新しい拡張バージョン。上位ワードはメジャーバージョン番号、下位ワードはマイナーバージョン番号です。 |
| plExtVersion | INT* | out | ネゴシエートされた拡張バージョン番号を格納する long へのポインター。ネゴシエーションが成功した場合、この番号は lLowVersion と lHighVersion の範囲内になります。 |
戻り値
このメソッドは、次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドが成功しました。 | |
| lHighVersion または lLowVersion のバージョンが無効です。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| plExtVersion パラメーターが有効なポインターではありません。 |
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 不要)。#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 不要)。