ホーム › Devices.Tapi › PHONECAPS
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 | サービスプロバイダ情報のサイズをバイト単位で示す。 |
| dwProviderInfoOffset | DWORD | 4 | +16 | +16 | サービスプロバイダ情報へのバイトオフセットを示す。 |
| dwPhoneInfoSize | DWORD | 4 | +20 | +20 | 電話機情報のサイズをバイト単位で示す。 |
| dwPhoneInfoOffset | DWORD | 4 | +24 | +24 | 電話機情報へのバイトオフセットを示す。 |
| dwPermanentPhoneID | DWORD | 4 | +28 | +28 | 電話デバイスの永続的な識別子を示す。再起動後も変わらない。 |
| dwPhoneNameSize | DWORD | 4 | +32 | +32 | 電話機名文字列のサイズをバイト単位で示す。 |
| dwPhoneNameOffset | DWORD | 4 | +36 | +36 | 電話機名文字列へのバイトオフセットを示す。 |
| dwStringFormat | DWORD | 4 | +40 | +40 | デバイスが使う文字列フォーマットを示すSTRINGFORMAT定数。 |
| dwPhoneStates | DWORD | 4 | +44 | +44 | 電話機が通知可能な状態変化を示すPHONESTATEビットフラグ。 |
| dwHookSwitchDevs | DWORD | 4 | +48 | +48 | 対応するフックスイッチデバイスを示すPHONEHOOKSWITCHDEVビットフラグ。 |
| dwHandsetHookSwitchModes | DWORD | 4 | +52 | +52 | ハンドセットが対応するフックスイッチモードを示すビットフラグ。 |
| dwSpeakerHookSwitchModes | DWORD | 4 | +56 | +56 | スピーカーが対応するフックスイッチモードを示すビットフラグ。 |
| dwHeadsetHookSwitchModes | DWORD | 4 | +60 | +60 | ヘッドセットが対応するフックスイッチモードを示すビットフラグ。 |
| dwVolumeFlags | DWORD | 4 | +64 | +64 | 音量制御に対応するフックスイッチデバイスを示すビットフラグ。 |
| dwGainFlags | DWORD | 4 | +68 | +68 | ゲイン制御に対応するフックスイッチデバイスを示すビットフラグ。 |
| dwDisplayNumRows | DWORD | 4 | +72 | +72 | ディスプレイの行数を示す。表示なしなら0。 |
| dwDisplayNumColumns | DWORD | 4 | +76 | +76 | ディスプレイの桁数を示す。表示なしなら0。 |
| dwNumRingModes | DWORD | 4 | +80 | +80 | サポートする呼出音モードの数を示す。 |
| dwNumButtonLamps | DWORD | 4 | +84 | +84 | ボタンランプの数を示す。 |
| dwButtonModesSize | DWORD | 4 | +88 | +88 | ボタンモードリストのサイズをバイト単位で示す。 |
| dwButtonModesOffset | DWORD | 4 | +92 | +92 | ボタンモードリストへのバイトオフセットを示す。 |
| dwButtonFunctionsSize | DWORD | 4 | +96 | +96 | ボタン機能リストのサイズをバイト単位で示す。 |
| dwButtonFunctionsOffset | DWORD | 4 | +100 | +100 | ボタン機能リストへのバイトオフセットを示す。 |
| dwLampModesSize | DWORD | 4 | +104 | +104 | ランプモードリストのサイズをバイト単位で示す。 |
| dwLampModesOffset | DWORD | 4 | +108 | +108 | ランプモードリストへのバイトオフセットを示す。 |
| dwNumSetData | DWORD | 4 | +112 | +112 | 電話機に設定可能なデータバッファの数を示す。 |
| dwSetDataSize | DWORD | 4 | +116 | +116 | 設定可能データ情報のサイズをバイト単位で示す。 |
| dwSetDataOffset | DWORD | 4 | +120 | +120 | 設定可能データ情報へのバイトオフセットを示す。 |
| dwNumGetData | DWORD | 4 | +124 | +124 | 電話機から取得可能なデータバッファの数を示す。 |
| dwGetDataSize | DWORD | 4 | +128 | +128 | 取得可能データ情報のサイズをバイト単位で示す。 |
| dwGetDataOffset | DWORD | 4 | +132 | +132 | 取得可能データ情報へのバイトオフセットを示す。 |
| dwDevSpecificSize | DWORD | 4 | +136 | +136 | デバイス固有情報のサイズをバイト単位で示す。 |
| dwDevSpecificOffset | DWORD | 4 | +140 | +140 | デバイス固有情報へのバイトオフセットを示す。 |
| dwDeviceClassesSize | DWORD | 4 | +144 | +144 | 対応デバイスクラス名リストのサイズをバイト単位で示す。 |
| dwDeviceClassesOffset | DWORD | 4 | +148 | +148 | 対応デバイスクラス名リストへのバイトオフセットを示す。 |
| dwPhoneFeatures | DWORD | 4 | +152 | +152 | 電話機が現在対応する機能を示すPHONEFEATUREビットフラグ。 |
| dwSettableHandsetHookSwitchModes | DWORD | 4 | +156 | +156 | ハンドセットで設定可能なフックスイッチモードを示すビットフラグ。 |
| dwSettableSpeakerHookSwitchModes | DWORD | 4 | +160 | +160 | スピーカーで設定可能なフックスイッチモードを示すビットフラグ。 |
| dwSettableHeadsetHookSwitchModes | DWORD | 4 | +164 | +164 | ヘッドセットで設定可能なフックスイッチモードを示すビットフラグ。 |
| dwMonitoredHandsetHookSwitchModes | DWORD | 4 | +168 | +168 | ハンドセットで監視可能なフックスイッチモードを示すビットフラグ。 |
| dwMonitoredSpeakerHookSwitchModes | DWORD | 4 | +172 | +172 | スピーカーで監視可能なフックスイッチモードを示すビットフラグ。 |
| dwMonitoredHeadsetHookSwitchModes | DWORD | 4 | +176 | +176 | ヘッドセットで監視可能なフックスイッチモードを示すビットフラグ。 |
| PermanentPhoneGuid | GUID | 16 | +180 | +180 | 電話デバイスを一意に識別する永続的なGUID。 |
各言語での定義
#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