PHONECAPS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwTotalSize | DWORD | 4 | +0 | +0 | このデータ構造体に割り当てられた合計サイズ (バイト単位)。 |
| dwNeededSize | DWORD | 4 | +4 | +4 | 返されるすべての情報を格納するために必要な、このデータ構造体のサイズ (バイト単位)。 |
| dwUsedSize | DWORD | 4 | +8 | +8 | このデータ構造体のうち、有用な情報が格納されている部分のサイズ (バイト単位)。 |
| dwProviderInfoSize | DWORD | 4 | +12 | +12 | プロバイダー固有の情報のサイズ (バイト単位)。プロバイダー固有の情報が文字列へのポインターである場合、サイズには null 終端文字を含めなければなりません。 |
| dwProviderInfoOffset | DWORD | 4 | +16 | +16 | 構造体の先頭から、サービス プロバイダー固有の情報を格納する可変サイズのフィールドまでのオフセット。 このメンバーは、ベンダー名や、ハードウェアおよびソフトウェアのバージョン番号など、プロバイダーのハードウェアやソフトウェアに関する情報を提供します。この情報は、プロバイダーに関する問題でユーザーがカスタマー サービスに問い合わせる必要がある場合に役立ちます。このフィールドのサイズは dwProviderInfoSize で指定されます。 |
| dwPhoneInfoSize | DWORD | 4 | +20 | +20 | 電話固有の情報のサイズ (バイト単位)。電話固有の情報が文字列へのポインターである場合、サイズには null 終端文字を含めなければなりません。 |
| dwPhoneInfoOffset | DWORD | 4 | +24 | +24 | 構造体の先頭から、電話固有の情報を格納する可変サイズのデバイス フィールドまでのオフセット。 このメンバーは、電話デバイスの製造元、モデル名、ソフトウェアのバージョンなど、接続されている電話デバイスに関する情報を提供します。この情報は、電話に関する問題でユーザーがカスタマー サービスに問い合わせる必要がある場合に役立ちます。このフィールドのサイズは dwPhoneInfoSize で指定されます。 |
| dwPermanentPhoneID | DWORD | 4 | +28 | +28 | システムの構成において、この電話デバイスを識別するための永続的な識別子。 |
| dwPhoneNameSize | DWORD | 4 | +32 | +32 | 電話の構成可能な名前のサイズ (null 終端文字を含む、バイト単位)。 |
| dwPhoneNameOffset | DWORD | 4 | +36 | +36 | 構造体の先頭から、この電話デバイスのユーザー構成可能な名前を格納する可変サイズのデバイス フィールドまでのオフセット。この名前は、電話デバイスのサービス プロバイダーを構成する際にユーザーが設定でき、ユーザーの利便性のために提供されます。このフィールドのサイズは dwPhoneNameSize で指定されます。 |
| dwStringFormat | DWORD | 4 | +40 | +40 | この電話デバイスで使用される文字列形式。このメンバーは、 STRINGFORMAT_ 定数 のいずれかを使用します。 |
| dwPhoneStates | DWORD | 4 | +44 | +44 | PHONE_STATE メッセージでアプリケーションに通知できる、この電話デバイスの状態変化。このメンバーは、 PHONESTATE_ 定数 の 1 つ以上を使用します。 |
| dwHookSwitchDevs | DWORD | 4 | +48 | +48 | 電話のフックスイッチ デバイス。このメンバーは、 PHONEHOOKSWITCHDEV_ 定数 のいずれかを使用します。 |
| dwHandsetHookSwitchModes | DWORD | 4 | +52 | +52 | ハンドセットのフックスイッチ モード。このメンバーは、フックスイッチ デバイスが dwHookSwitchDevs に列挙されている場合にのみ意味を持ちます。 PHONEHOOKSWITCHMODE_ 定数 のいずれかを使用します。 |
| dwSpeakerHookSwitchModes | DWORD | 4 | +56 | +56 | スピーカーのフックスイッチ モード。このメンバーは、フックスイッチ デバイスが dwHookSwitchDevs に列挙されている場合にのみ意味を持ちます。PHONEHOOKSWITCHMODE_ 定数のいずれかを使用します。 |
| dwHeadsetHookSwitchModes | DWORD | 4 | +60 | +60 | ヘッドセットのフックスイッチ モード。このメンバーは、フックスイッチ デバイスが dwHookSwitchDevs に列挙されている場合にのみ意味を持ちます。 PHONEHOOKSWITCHMODE_ 定数 のいずれかを使用します。 |
| dwVolumeFlags | DWORD | 4 | +64 | +64 | 電話デバイスのスピーカー コンポーネントの音量設定機能。PHONEHOOKSWITCHDEV_ に対応するビット位置が TRUE の場合、対応するフックスイッチ デバイスのスピーカー コンポーネントの音量を phoneSetVolume で調整できます。 |
| dwGainFlags | DWORD | 4 | +68 | +68 | 電話デバイスのマイク コンポーネントのゲイン設定機能。PHONEHOOKSWITCHDEV_ に対応するビット位置が TRUE の場合、対応するフックスイッチ デバイスのマイク コンポーネントの音量を phoneSetGain で調整できます。 |
| dwDisplayNumRows | DWORD | 4 | +72 | +72 | 電話のディスプレイの行数を示す、電話デバイスの表示機能。ディスプレイを持たない電話デバイスでは、dwDisplayNumRows メンバーと dwDisplayNumColumns メンバーはいずれも 0 です。 |
| dwDisplayNumColumns | DWORD | 4 | +76 | +76 | 電話のディスプレイの列数を示す、電話デバイスの表示機能。ディスプレイを持たない電話デバイスでは、dwDisplayNumRows メンバーと dwDisplayNumColumns メンバーはいずれも 0 です。 |
| dwNumRingModes | DWORD | 4 | +80 | +80 | 電話デバイスの呼び出し (リング) 機能。この電話は dwNumRingModes 種類の呼び出しパターンで鳴動でき、それらは 1、2、から dwNumRingModes から 1 を引いた値までで識別されます。このメンバーの値が 0 の場合、アプリケーションは電話の呼び出しモードを制御できません。このメンバーの値が 0 より大きい場合は、サービス プロバイダーがサポートする、無音に加えて使用できる呼び出しモードの数を示します。 phoneGetRing の lpdwRingMode パラメーター、または phoneSetRing の dwRingMode パラメーターの値 0 は無音 (電話が鳴っていない、または鳴らすべきでない状態) を示し、1 から dwNumRingModes までの dwRingMode の値が、その電話デバイスで有効な呼び出しモードです。 |
| dwNumButtonLamps | DWORD | 4 | +84 | +84 | TAPI で検出できる、電話デバイス上のボタン/ランプの数。ボタン/ランプは識別子によって識別されます。有効なボタン/ランプ識別子の範囲は、0 から dwNumButtonLamps から 1 を引いた値までです。キーパッドのボタン '0' から '9'、'*'、'#' には、識別子 0 から 12 が割り当てられます。 |
| dwButtonModesSize | DWORD | 4 | +88 | +88 | ボタン モード配列のサイズ (バイト単位)。 |
| dwButtonModesOffset | DWORD | 4 | +92 | +92 | この構造体の先頭から、電話のボタンのボタン モードを格納する可変サイズのフィールドまでのオフセット。この配列は、ボタン/ランプ識別子でインデックス付けされます。この配列は PHONEBUTTONMODE_ 定数 を使用します。配列のサイズは dwButtonModesSize で指定されます。 |
| dwButtonFunctionsSize | DWORD | 4 | +96 | +96 | ボタン機能フィールドのサイズ (バイト単位)。 |
| dwButtonFunctionsOffset | DWORD | 4 | +100 | +100 | この構造体の先頭から、電話のボタンのボタン機能を格納する可変サイズのフィールドまでのオフセット。この配列は、ボタン/ランプ識別子でインデックス付けされます。この配列は PHONEBUTTONFUNCTION_ 定数 を使用します。配列のサイズは dwButtonFunctionsSize で指定されます。 |
| dwLampModesSize | DWORD | 4 | +104 | +104 | ランプ モード配列のサイズ (バイト単位)。 |
| dwLampModesOffset | DWORD | 4 | +108 | +108 | この構造体の先頭から、電話のランプのランプ モードを格納する可変サイズのフィールドまでのオフセット。この配列は、ボタン/ランプ識別子でインデックス付けされます。この配列は PHONELAMPMODE_ 定数 を使用します。配列のサイズは dwLampModesSize で指定されます。 |
| dwNumSetData | DWORD | 4 | +112 | +112 | 電話デバイス内のダウンロード領域の数。それぞれの領域は、データ ID 0、1、…、dwNumSetData から 1 を引いた値を使用して参照されます。このメンバーが 0 の場合、その電話はダウンロード機能をサポートしていません。 |
| dwSetDataSize | DWORD | 4 | +116 | +116 | データ サイズ配列のサイズ (バイト単位)。 |
| dwSetDataOffset | DWORD | 4 | +120 | +120 | この構造体の先頭から、電話のダウンロード データ領域のサイズ (バイト単位) を格納する可変サイズのフィールドまでのオフセット。これは、データ識別子でインデックス付けされる DWORD サイズの要素から成る配列です。配列のサイズは dwSetDataSize で指定されます。 |
| dwNumGetData | DWORD | 4 | +124 | +124 | 電話デバイス内のアップロード領域の数。それぞれの領域は、データ ID 0、1、…、dwNumGetData から 1 を引いた値を使用して参照されます。このフィールドが 0 の場合、その電話はアップロード機能をサポートしていません。 |
| dwGetDataSize | DWORD | 4 | +128 | +128 | データ サイズ配列のサイズ (バイト単位)。 |
| dwGetDataOffset | DWORD | 4 | +132 | +132 | この構造体の先頭から、電話のアップロード データ領域のサイズ (バイト単位) を格納する可変サイズのフィールドまでのオフセット。これは、データ識別子でインデックス付けされる DWORD サイズの要素から成る配列です。配列のサイズは dwGetDataSize で指定されます。 |
| dwDevSpecificSize | DWORD | 4 | +136 | +136 | デバイス固有フィールドのサイズ (バイト単位)。デバイス固有の情報が文字列へのポインターである場合、サイズには null 終端文字を含めなければなりません。 |
| dwDevSpecificOffset | DWORD | 4 | +140 | +140 | この構造体の先頭から、可変サイズのデバイス固有フィールドまでのオフセット。このフィールドのサイズは dwDevSpecificSize で指定されます。 |
| dwDeviceClassesSize | DWORD | 4 | +144 | +144 | サポートされるデバイス クラス識別子のサイズ (バイト単位)。 |
| dwDeviceClassesOffset | DWORD | 4 | +148 | +148 | この構造体の先頭から、 phoneGetID で使用するためにこのデバイスでサポートされるデバイス クラス識別子から成る文字列までのオフセット。各識別子は NULL で区切られ、リストの最後の識別子の後には 2 つの NULL が続きます。このフィールドのサイズは dwDeviceClassesSize で指定されます。 |
| dwPhoneFeatures | DWORD | 4 | +152 | +152 | その電話で呼び出すことができるテレフォニー API 関数を示すフラグ。0 は、対応する機能が実装されておらず、アプリケーションがその電話に対して呼び出すことが一切できないことを示します。1 は、デバイスの状態やその他の要因に応じて、その機能を呼び出せる可能性があることを示します。このメンバーは PHONEFEATURE_ 定数 を使用します。 |
| dwSettableHandsetHookSwitchModes | DWORD | 4 | +156 | +156 | PHONEHOOKSWITCHMODE_ の値のうち、 phoneSetHookSwitch を使用してハンドセットに設定できるもの。 |
| dwSettableSpeakerHookSwitchModes | DWORD | 4 | +160 | +160 | PHONEHOOKSWITCHMODE_ の値のうち、 phoneSetHookSwitch を使用してスピーカーフォンに設定できるもの。 |
| dwSettableHeadsetHookSwitchModes | DWORD | 4 | +164 | +164 | PHONEHOOKSWITCHMODE_ の値のうち、 phoneSetHookSwitch を使用してヘッドセットに設定できるもの。 |
| dwMonitoredHandsetHookSwitchModes | DWORD | 4 | +168 | +168 | PHONEHOOKSWITCHMODE_ の値のうち、 PHONE_STATE メッセージおよび phoneGetHookSwitch によって、ハンドセットについて検出および報告できるもの。 |
| dwMonitoredSpeakerHookSwitchModes | DWORD | 4 | +172 | +172 | PHONEHOOKSWITCHMODE_ の値のうち、PHONE_STATE メッセージおよび phoneSetHookSwitch によって、スピーカーフォンについて検出および報告できるもの。 |
| dwMonitoredHeadsetHookSwitchModes | DWORD | 4 | +176 | +176 | PHONEHOOKSWITCHMODE_ の値のうち、PHONE_STATE メッセージおよび phoneSetHookSwitch によって、ヘッドセットについて検出および報告できるもの。 |
| PermanentPhoneGuid | GUID | 16 | +180 | +180 | この電話に永続的に関連付けられている GUID。 |
公式ドキュメント
PHONECAPS 構造体は、電話デバイスの機能を記述します。 phoneGetDevCaps 関数および TSPI_phoneGetDevCaps 関数は、この構造体を返します。
解説(Remarks)
デバイス固有の拡張には、このデータ構造体の DevSpecific 可変サイズ領域 (dwDevSpecificSize および dwDevSpecificOffset) を使用してください。
dwDeviceClassesSize から dwMonitoredHeadsetHookSwitchModes までのメンバーは、API バージョン 2.0 以降で電話デバイスを開いたアプリケーションでのみ使用できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// PHONECAPS (x64 196 / x86 196 バイト)
#pragma pack(push, 1)
typedef struct PHONECAPS {
DWORD dwTotalSize;
DWORD dwNeededSize;
DWORD dwUsedSize;
DWORD dwProviderInfoSize;
DWORD dwProviderInfoOffset;
DWORD dwPhoneInfoSize;
DWORD dwPhoneInfoOffset;
DWORD dwPermanentPhoneID;
DWORD dwPhoneNameSize;
DWORD dwPhoneNameOffset;
DWORD dwStringFormat;
DWORD dwPhoneStates;
DWORD dwHookSwitchDevs;
DWORD dwHandsetHookSwitchModes;
DWORD dwSpeakerHookSwitchModes;
DWORD dwHeadsetHookSwitchModes;
DWORD dwVolumeFlags;
DWORD dwGainFlags;
DWORD dwDisplayNumRows;
DWORD dwDisplayNumColumns;
DWORD dwNumRingModes;
DWORD dwNumButtonLamps;
DWORD dwButtonModesSize;
DWORD dwButtonModesOffset;
DWORD dwButtonFunctionsSize;
DWORD dwButtonFunctionsOffset;
DWORD dwLampModesSize;
DWORD dwLampModesOffset;
DWORD dwNumSetData;
DWORD dwSetDataSize;
DWORD dwSetDataOffset;
DWORD dwNumGetData;
DWORD dwGetDataSize;
DWORD dwGetDataOffset;
DWORD dwDevSpecificSize;
DWORD dwDevSpecificOffset;
DWORD dwDeviceClassesSize;
DWORD dwDeviceClassesOffset;
DWORD dwPhoneFeatures;
DWORD dwSettableHandsetHookSwitchModes;
DWORD dwSettableSpeakerHookSwitchModes;
DWORD dwSettableHeadsetHookSwitchModes;
DWORD dwMonitoredHandsetHookSwitchModes;
DWORD dwMonitoredSpeakerHookSwitchModes;
DWORD dwMonitoredHeadsetHookSwitchModes;
GUID PermanentPhoneGuid;
} PHONECAPS;
#pragma pack(pop)using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct PHONECAPS
{
public uint dwTotalSize;
public uint dwNeededSize;
public uint dwUsedSize;
public uint dwProviderInfoSize;
public uint dwProviderInfoOffset;
public uint dwPhoneInfoSize;
public uint dwPhoneInfoOffset;
public uint dwPermanentPhoneID;
public uint dwPhoneNameSize;
public uint dwPhoneNameOffset;
public uint dwStringFormat;
public uint dwPhoneStates;
public uint dwHookSwitchDevs;
public uint dwHandsetHookSwitchModes;
public uint dwSpeakerHookSwitchModes;
public uint dwHeadsetHookSwitchModes;
public uint dwVolumeFlags;
public uint dwGainFlags;
public uint dwDisplayNumRows;
public uint dwDisplayNumColumns;
public uint dwNumRingModes;
public uint dwNumButtonLamps;
public uint dwButtonModesSize;
public uint dwButtonModesOffset;
public uint dwButtonFunctionsSize;
public uint dwButtonFunctionsOffset;
public uint dwLampModesSize;
public uint dwLampModesOffset;
public uint dwNumSetData;
public uint dwSetDataSize;
public uint dwSetDataOffset;
public uint dwNumGetData;
public uint dwGetDataSize;
public uint dwGetDataOffset;
public uint dwDevSpecificSize;
public uint dwDevSpecificOffset;
public uint dwDeviceClassesSize;
public uint dwDeviceClassesOffset;
public uint dwPhoneFeatures;
public uint dwSettableHandsetHookSwitchModes;
public uint dwSettableSpeakerHookSwitchModes;
public uint dwSettableHeadsetHookSwitchModes;
public uint dwMonitoredHandsetHookSwitchModes;
public uint dwMonitoredSpeakerHookSwitchModes;
public uint dwMonitoredHeadsetHookSwitchModes;
public Guid PermanentPhoneGuid;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure PHONECAPS
Public dwTotalSize As UInteger
Public dwNeededSize As UInteger
Public dwUsedSize As UInteger
Public dwProviderInfoSize As UInteger
Public dwProviderInfoOffset As UInteger
Public dwPhoneInfoSize As UInteger
Public dwPhoneInfoOffset As UInteger
Public dwPermanentPhoneID As UInteger
Public dwPhoneNameSize As UInteger
Public dwPhoneNameOffset As UInteger
Public dwStringFormat As UInteger
Public dwPhoneStates As UInteger
Public dwHookSwitchDevs As UInteger
Public dwHandsetHookSwitchModes As UInteger
Public dwSpeakerHookSwitchModes As UInteger
Public dwHeadsetHookSwitchModes As UInteger
Public dwVolumeFlags As UInteger
Public dwGainFlags As UInteger
Public dwDisplayNumRows As UInteger
Public dwDisplayNumColumns As UInteger
Public dwNumRingModes As UInteger
Public dwNumButtonLamps As UInteger
Public dwButtonModesSize As UInteger
Public dwButtonModesOffset As UInteger
Public dwButtonFunctionsSize As UInteger
Public dwButtonFunctionsOffset As UInteger
Public dwLampModesSize As UInteger
Public dwLampModesOffset As UInteger
Public dwNumSetData As UInteger
Public dwSetDataSize As UInteger
Public dwSetDataOffset As UInteger
Public dwNumGetData As UInteger
Public dwGetDataSize As UInteger
Public dwGetDataOffset As UInteger
Public dwDevSpecificSize As UInteger
Public dwDevSpecificOffset As UInteger
Public dwDeviceClassesSize As UInteger
Public dwDeviceClassesOffset As UInteger
Public dwPhoneFeatures As UInteger
Public dwSettableHandsetHookSwitchModes As UInteger
Public dwSettableSpeakerHookSwitchModes As UInteger
Public dwSettableHeadsetHookSwitchModes As UInteger
Public dwMonitoredHandsetHookSwitchModes As UInteger
Public dwMonitoredSpeakerHookSwitchModes As UInteger
Public dwMonitoredHeadsetHookSwitchModes As UInteger
Public PermanentPhoneGuid As Guid
End Structureimport ctypes
from ctypes import wintypes
class PHONECAPS(ctypes.Structure):
_pack_ = 1
_fields_ = [
("dwTotalSize", wintypes.DWORD),
("dwNeededSize", wintypes.DWORD),
("dwUsedSize", wintypes.DWORD),
("dwProviderInfoSize", wintypes.DWORD),
("dwProviderInfoOffset", wintypes.DWORD),
("dwPhoneInfoSize", wintypes.DWORD),
("dwPhoneInfoOffset", wintypes.DWORD),
("dwPermanentPhoneID", wintypes.DWORD),
("dwPhoneNameSize", wintypes.DWORD),
("dwPhoneNameOffset", wintypes.DWORD),
("dwStringFormat", wintypes.DWORD),
("dwPhoneStates", wintypes.DWORD),
("dwHookSwitchDevs", wintypes.DWORD),
("dwHandsetHookSwitchModes", wintypes.DWORD),
("dwSpeakerHookSwitchModes", wintypes.DWORD),
("dwHeadsetHookSwitchModes", wintypes.DWORD),
("dwVolumeFlags", wintypes.DWORD),
("dwGainFlags", wintypes.DWORD),
("dwDisplayNumRows", wintypes.DWORD),
("dwDisplayNumColumns", wintypes.DWORD),
("dwNumRingModes", wintypes.DWORD),
("dwNumButtonLamps", wintypes.DWORD),
("dwButtonModesSize", wintypes.DWORD),
("dwButtonModesOffset", wintypes.DWORD),
("dwButtonFunctionsSize", wintypes.DWORD),
("dwButtonFunctionsOffset", wintypes.DWORD),
("dwLampModesSize", wintypes.DWORD),
("dwLampModesOffset", wintypes.DWORD),
("dwNumSetData", wintypes.DWORD),
("dwSetDataSize", wintypes.DWORD),
("dwSetDataOffset", wintypes.DWORD),
("dwNumGetData", wintypes.DWORD),
("dwGetDataSize", wintypes.DWORD),
("dwGetDataOffset", wintypes.DWORD),
("dwDevSpecificSize", wintypes.DWORD),
("dwDevSpecificOffset", wintypes.DWORD),
("dwDeviceClassesSize", wintypes.DWORD),
("dwDeviceClassesOffset", wintypes.DWORD),
("dwPhoneFeatures", wintypes.DWORD),
("dwSettableHandsetHookSwitchModes", wintypes.DWORD),
("dwSettableSpeakerHookSwitchModes", wintypes.DWORD),
("dwSettableHeadsetHookSwitchModes", wintypes.DWORD),
("dwMonitoredHandsetHookSwitchModes", wintypes.DWORD),
("dwMonitoredSpeakerHookSwitchModes", wintypes.DWORD),
("dwMonitoredHeadsetHookSwitchModes", wintypes.DWORD),
("PermanentPhoneGuid", GUID),
]#[repr(C, packed(1))]
pub struct PHONECAPS {
pub dwTotalSize: u32,
pub dwNeededSize: u32,
pub dwUsedSize: u32,
pub dwProviderInfoSize: u32,
pub dwProviderInfoOffset: u32,
pub dwPhoneInfoSize: u32,
pub dwPhoneInfoOffset: u32,
pub dwPermanentPhoneID: u32,
pub dwPhoneNameSize: u32,
pub dwPhoneNameOffset: u32,
pub dwStringFormat: u32,
pub dwPhoneStates: u32,
pub dwHookSwitchDevs: u32,
pub dwHandsetHookSwitchModes: u32,
pub dwSpeakerHookSwitchModes: u32,
pub dwHeadsetHookSwitchModes: u32,
pub dwVolumeFlags: u32,
pub dwGainFlags: u32,
pub dwDisplayNumRows: u32,
pub dwDisplayNumColumns: u32,
pub dwNumRingModes: u32,
pub dwNumButtonLamps: u32,
pub dwButtonModesSize: u32,
pub dwButtonModesOffset: u32,
pub dwButtonFunctionsSize: u32,
pub dwButtonFunctionsOffset: u32,
pub dwLampModesSize: u32,
pub dwLampModesOffset: u32,
pub dwNumSetData: u32,
pub dwSetDataSize: u32,
pub dwSetDataOffset: u32,
pub dwNumGetData: u32,
pub dwGetDataSize: u32,
pub dwGetDataOffset: u32,
pub dwDevSpecificSize: u32,
pub dwDevSpecificOffset: u32,
pub dwDeviceClassesSize: u32,
pub dwDeviceClassesOffset: u32,
pub dwPhoneFeatures: u32,
pub dwSettableHandsetHookSwitchModes: u32,
pub dwSettableSpeakerHookSwitchModes: u32,
pub dwSettableHeadsetHookSwitchModes: u32,
pub dwMonitoredHandsetHookSwitchModes: u32,
pub dwMonitoredSpeakerHookSwitchModes: u32,
pub dwMonitoredHeadsetHookSwitchModes: u32,
pub PermanentPhoneGuid: GUID,
}import "golang.org/x/sys/windows"
type PHONECAPS struct {
dwTotalSize uint32
dwNeededSize uint32
dwUsedSize uint32
dwProviderInfoSize uint32
dwProviderInfoOffset uint32
dwPhoneInfoSize uint32
dwPhoneInfoOffset uint32
dwPermanentPhoneID uint32
dwPhoneNameSize uint32
dwPhoneNameOffset uint32
dwStringFormat uint32
dwPhoneStates uint32
dwHookSwitchDevs uint32
dwHandsetHookSwitchModes uint32
dwSpeakerHookSwitchModes uint32
dwHeadsetHookSwitchModes uint32
dwVolumeFlags uint32
dwGainFlags uint32
dwDisplayNumRows uint32
dwDisplayNumColumns uint32
dwNumRingModes uint32
dwNumButtonLamps uint32
dwButtonModesSize uint32
dwButtonModesOffset uint32
dwButtonFunctionsSize uint32
dwButtonFunctionsOffset uint32
dwLampModesSize uint32
dwLampModesOffset uint32
dwNumSetData uint32
dwSetDataSize uint32
dwSetDataOffset uint32
dwNumGetData uint32
dwGetDataSize uint32
dwGetDataOffset uint32
dwDevSpecificSize uint32
dwDevSpecificOffset uint32
dwDeviceClassesSize uint32
dwDeviceClassesOffset uint32
dwPhoneFeatures uint32
dwSettableHandsetHookSwitchModes uint32
dwSettableSpeakerHookSwitchModes uint32
dwSettableHeadsetHookSwitchModes uint32
dwMonitoredHandsetHookSwitchModes uint32
dwMonitoredSpeakerHookSwitchModes uint32
dwMonitoredHeadsetHookSwitchModes uint32
PermanentPhoneGuid windows.GUID
}type
PHONECAPS = packed record
dwTotalSize: DWORD;
dwNeededSize: DWORD;
dwUsedSize: DWORD;
dwProviderInfoSize: DWORD;
dwProviderInfoOffset: DWORD;
dwPhoneInfoSize: DWORD;
dwPhoneInfoOffset: DWORD;
dwPermanentPhoneID: DWORD;
dwPhoneNameSize: DWORD;
dwPhoneNameOffset: DWORD;
dwStringFormat: DWORD;
dwPhoneStates: DWORD;
dwHookSwitchDevs: DWORD;
dwHandsetHookSwitchModes: DWORD;
dwSpeakerHookSwitchModes: DWORD;
dwHeadsetHookSwitchModes: DWORD;
dwVolumeFlags: DWORD;
dwGainFlags: DWORD;
dwDisplayNumRows: DWORD;
dwDisplayNumColumns: DWORD;
dwNumRingModes: DWORD;
dwNumButtonLamps: DWORD;
dwButtonModesSize: DWORD;
dwButtonModesOffset: DWORD;
dwButtonFunctionsSize: DWORD;
dwButtonFunctionsOffset: DWORD;
dwLampModesSize: DWORD;
dwLampModesOffset: DWORD;
dwNumSetData: DWORD;
dwSetDataSize: DWORD;
dwSetDataOffset: DWORD;
dwNumGetData: DWORD;
dwGetDataSize: DWORD;
dwGetDataOffset: DWORD;
dwDevSpecificSize: DWORD;
dwDevSpecificOffset: DWORD;
dwDeviceClassesSize: DWORD;
dwDeviceClassesOffset: DWORD;
dwPhoneFeatures: DWORD;
dwSettableHandsetHookSwitchModes: DWORD;
dwSettableSpeakerHookSwitchModes: DWORD;
dwSettableHeadsetHookSwitchModes: DWORD;
dwMonitoredHandsetHookSwitchModes: DWORD;
dwMonitoredSpeakerHookSwitchModes: DWORD;
dwMonitoredHeadsetHookSwitchModes: DWORD;
PermanentPhoneGuid: TGUID;
end;const PHONECAPS = extern struct {
dwTotalSize: u32,
dwNeededSize: u32,
dwUsedSize: u32,
dwProviderInfoSize: u32,
dwProviderInfoOffset: u32,
dwPhoneInfoSize: u32,
dwPhoneInfoOffset: u32,
dwPermanentPhoneID: u32,
dwPhoneNameSize: u32,
dwPhoneNameOffset: u32,
dwStringFormat: u32,
dwPhoneStates: u32,
dwHookSwitchDevs: u32,
dwHandsetHookSwitchModes: u32,
dwSpeakerHookSwitchModes: u32,
dwHeadsetHookSwitchModes: u32,
dwVolumeFlags: u32,
dwGainFlags: u32,
dwDisplayNumRows: u32,
dwDisplayNumColumns: u32,
dwNumRingModes: u32,
dwNumButtonLamps: u32,
dwButtonModesSize: u32,
dwButtonModesOffset: u32,
dwButtonFunctionsSize: u32,
dwButtonFunctionsOffset: u32,
dwLampModesSize: u32,
dwLampModesOffset: u32,
dwNumSetData: u32,
dwSetDataSize: u32,
dwSetDataOffset: u32,
dwNumGetData: u32,
dwGetDataSize: u32,
dwGetDataOffset: u32,
dwDevSpecificSize: u32,
dwDevSpecificOffset: u32,
dwDeviceClassesSize: u32,
dwDeviceClassesOffset: u32,
dwPhoneFeatures: u32,
dwSettableHandsetHookSwitchModes: u32,
dwSettableSpeakerHookSwitchModes: u32,
dwSettableHeadsetHookSwitchModes: u32,
dwMonitoredHandsetHookSwitchModes: u32,
dwMonitoredSpeakerHookSwitchModes: u32,
dwMonitoredHeadsetHookSwitchModes: u32,
PermanentPhoneGuid: GUID,
};type
PHONECAPS {.packed.} = object
dwTotalSize: uint32
dwNeededSize: uint32
dwUsedSize: uint32
dwProviderInfoSize: uint32
dwProviderInfoOffset: uint32
dwPhoneInfoSize: uint32
dwPhoneInfoOffset: uint32
dwPermanentPhoneID: uint32
dwPhoneNameSize: uint32
dwPhoneNameOffset: uint32
dwStringFormat: uint32
dwPhoneStates: uint32
dwHookSwitchDevs: uint32
dwHandsetHookSwitchModes: uint32
dwSpeakerHookSwitchModes: uint32
dwHeadsetHookSwitchModes: uint32
dwVolumeFlags: uint32
dwGainFlags: uint32
dwDisplayNumRows: uint32
dwDisplayNumColumns: uint32
dwNumRingModes: uint32
dwNumButtonLamps: uint32
dwButtonModesSize: uint32
dwButtonModesOffset: uint32
dwButtonFunctionsSize: uint32
dwButtonFunctionsOffset: uint32
dwLampModesSize: uint32
dwLampModesOffset: uint32
dwNumSetData: uint32
dwSetDataSize: uint32
dwSetDataOffset: uint32
dwNumGetData: uint32
dwGetDataSize: uint32
dwGetDataOffset: uint32
dwDevSpecificSize: uint32
dwDevSpecificOffset: uint32
dwDeviceClassesSize: uint32
dwDeviceClassesOffset: uint32
dwPhoneFeatures: uint32
dwSettableHandsetHookSwitchModes: uint32
dwSettableSpeakerHookSwitchModes: uint32
dwSettableHeadsetHookSwitchModes: uint32
dwMonitoredHandsetHookSwitchModes: uint32
dwMonitoredSpeakerHookSwitchModes: uint32
dwMonitoredHeadsetHookSwitchModes: uint32
PermanentPhoneGuid: GUIDalign(1)
struct PHONECAPS
{
uint dwTotalSize;
uint dwNeededSize;
uint dwUsedSize;
uint dwProviderInfoSize;
uint dwProviderInfoOffset;
uint dwPhoneInfoSize;
uint dwPhoneInfoOffset;
uint dwPermanentPhoneID;
uint dwPhoneNameSize;
uint dwPhoneNameOffset;
uint dwStringFormat;
uint dwPhoneStates;
uint dwHookSwitchDevs;
uint dwHandsetHookSwitchModes;
uint dwSpeakerHookSwitchModes;
uint dwHeadsetHookSwitchModes;
uint dwVolumeFlags;
uint dwGainFlags;
uint dwDisplayNumRows;
uint dwDisplayNumColumns;
uint dwNumRingModes;
uint dwNumButtonLamps;
uint dwButtonModesSize;
uint dwButtonModesOffset;
uint dwButtonFunctionsSize;
uint dwButtonFunctionsOffset;
uint dwLampModesSize;
uint dwLampModesOffset;
uint dwNumSetData;
uint dwSetDataSize;
uint dwSetDataOffset;
uint dwNumGetData;
uint dwGetDataSize;
uint dwGetDataOffset;
uint dwDevSpecificSize;
uint dwDevSpecificOffset;
uint dwDeviceClassesSize;
uint dwDeviceClassesOffset;
uint dwPhoneFeatures;
uint dwSettableHandsetHookSwitchModes;
uint dwSettableSpeakerHookSwitchModes;
uint dwSettableHeadsetHookSwitchModes;
uint dwMonitoredHandsetHookSwitchModes;
uint dwMonitoredSpeakerHookSwitchModes;
uint dwMonitoredHeadsetHookSwitchModes;
GUID PermanentPhoneGuid;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PHONECAPS サイズ: 196 バイト(x64)
dim st, 49 ; 4byte整数×49(構造体サイズ 196 / 4 切り上げ)
; dwTotalSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwNeededSize : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwUsedSize : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwProviderInfoSize : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwProviderInfoOffset : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwPhoneInfoSize : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwPhoneInfoOffset : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; dwPermanentPhoneID : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; dwPhoneNameSize : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; dwPhoneNameOffset : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; dwStringFormat : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; dwPhoneStates : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; dwHookSwitchDevs : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; dwHandsetHookSwitchModes : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; dwSpeakerHookSwitchModes : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; dwHeadsetHookSwitchModes : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; dwVolumeFlags : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; dwGainFlags : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; dwDisplayNumRows : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; dwDisplayNumColumns : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; dwNumRingModes : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; dwNumButtonLamps : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; dwButtonModesSize : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; dwButtonModesOffset : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; dwButtonFunctionsSize : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; dwButtonFunctionsOffset : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; dwLampModesSize : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; dwLampModesOffset : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; dwNumSetData : DWORD (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; dwSetDataSize : DWORD (+116, 4byte) st.29 = 値 / 値 = st.29 (lpoke/lpeek も可)
; dwSetDataOffset : DWORD (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; dwNumGetData : DWORD (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; dwGetDataSize : DWORD (+128, 4byte) st.32 = 値 / 値 = st.32 (lpoke/lpeek も可)
; dwGetDataOffset : DWORD (+132, 4byte) st.33 = 値 / 値 = st.33 (lpoke/lpeek も可)
; dwDevSpecificSize : DWORD (+136, 4byte) st.34 = 値 / 値 = st.34 (lpoke/lpeek も可)
; dwDevSpecificOffset : DWORD (+140, 4byte) st.35 = 値 / 値 = st.35 (lpoke/lpeek も可)
; dwDeviceClassesSize : DWORD (+144, 4byte) st.36 = 値 / 値 = st.36 (lpoke/lpeek も可)
; dwDeviceClassesOffset : DWORD (+148, 4byte) st.37 = 値 / 値 = st.37 (lpoke/lpeek も可)
; dwPhoneFeatures : DWORD (+152, 4byte) st.38 = 値 / 値 = st.38 (lpoke/lpeek も可)
; dwSettableHandsetHookSwitchModes : DWORD (+156, 4byte) st.39 = 値 / 値 = st.39 (lpoke/lpeek も可)
; dwSettableSpeakerHookSwitchModes : DWORD (+160, 4byte) st.40 = 値 / 値 = st.40 (lpoke/lpeek も可)
; dwSettableHeadsetHookSwitchModes : DWORD (+164, 4byte) st.41 = 値 / 値 = st.41 (lpoke/lpeek も可)
; dwMonitoredHandsetHookSwitchModes : DWORD (+168, 4byte) st.42 = 値 / 値 = st.42 (lpoke/lpeek も可)
; dwMonitoredSpeakerHookSwitchModes : DWORD (+172, 4byte) st.43 = 値 / 値 = st.43 (lpoke/lpeek も可)
; dwMonitoredHeadsetHookSwitchModes : DWORD (+176, 4byte) st.44 = 値 / 値 = st.44 (lpoke/lpeek も可)
; PermanentPhoneGuid : GUID (+180, 16byte) varptr(st)+180 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global PHONECAPS, pack=1
#field int dwTotalSize
#field int dwNeededSize
#field int dwUsedSize
#field int dwProviderInfoSize
#field int dwProviderInfoOffset
#field int dwPhoneInfoSize
#field int dwPhoneInfoOffset
#field int dwPermanentPhoneID
#field int dwPhoneNameSize
#field int dwPhoneNameOffset
#field int dwStringFormat
#field int dwPhoneStates
#field int dwHookSwitchDevs
#field int dwHandsetHookSwitchModes
#field int dwSpeakerHookSwitchModes
#field int dwHeadsetHookSwitchModes
#field int dwVolumeFlags
#field int dwGainFlags
#field int dwDisplayNumRows
#field int dwDisplayNumColumns
#field int dwNumRingModes
#field int dwNumButtonLamps
#field int dwButtonModesSize
#field int dwButtonModesOffset
#field int dwButtonFunctionsSize
#field int dwButtonFunctionsOffset
#field int dwLampModesSize
#field int dwLampModesOffset
#field int dwNumSetData
#field int dwSetDataSize
#field int dwSetDataOffset
#field int dwNumGetData
#field int dwGetDataSize
#field int dwGetDataOffset
#field int dwDevSpecificSize
#field int dwDevSpecificOffset
#field int dwDeviceClassesSize
#field int dwDeviceClassesOffset
#field int dwPhoneFeatures
#field int dwSettableHandsetHookSwitchModes
#field int dwSettableSpeakerHookSwitchModes
#field int dwSettableHeadsetHookSwitchModes
#field int dwMonitoredHandsetHookSwitchModes
#field int dwMonitoredSpeakerHookSwitchModes
#field int dwMonitoredHeadsetHookSwitchModes
#field GUID PermanentPhoneGuid
#endstruct
stdim st, PHONECAPS ; NSTRUCT 変数を確保
st->dwTotalSize = 100
mes "dwTotalSize=" + st->dwTotalSize