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

PHONECAPS

構造体
サイズx64: 196 バイト / x86: 196 バイトパッキング1

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
dwTotalSizeDWORD4+0+0アプリが確保した構造体全体のサイズをバイト単位で示す。
dwNeededSizeDWORD4+4+4全情報を格納するのに必要なサイズをバイト単位で示す。
dwUsedSizeDWORD4+8+8実際に使用されたサイズをバイト単位で示す。
dwProviderInfoSizeDWORD4+12+12サービスプロバイダ情報のサイズをバイト単位で示す。
dwProviderInfoOffsetDWORD4+16+16サービスプロバイダ情報へのバイトオフセットを示す。
dwPhoneInfoSizeDWORD4+20+20電話機情報のサイズをバイト単位で示す。
dwPhoneInfoOffsetDWORD4+24+24電話機情報へのバイトオフセットを示す。
dwPermanentPhoneIDDWORD4+28+28電話デバイスの永続的な識別子を示す。再起動後も変わらない。
dwPhoneNameSizeDWORD4+32+32電話機名文字列のサイズをバイト単位で示す。
dwPhoneNameOffsetDWORD4+36+36電話機名文字列へのバイトオフセットを示す。
dwStringFormatDWORD4+40+40デバイスが使う文字列フォーマットを示すSTRINGFORMAT定数。
dwPhoneStatesDWORD4+44+44電話機が通知可能な状態変化を示すPHONESTATEビットフラグ。
dwHookSwitchDevsDWORD4+48+48対応するフックスイッチデバイスを示すPHONEHOOKSWITCHDEVビットフラグ。
dwHandsetHookSwitchModesDWORD4+52+52ハンドセットが対応するフックスイッチモードを示すビットフラグ。
dwSpeakerHookSwitchModesDWORD4+56+56スピーカーが対応するフックスイッチモードを示すビットフラグ。
dwHeadsetHookSwitchModesDWORD4+60+60ヘッドセットが対応するフックスイッチモードを示すビットフラグ。
dwVolumeFlagsDWORD4+64+64音量制御に対応するフックスイッチデバイスを示すビットフラグ。
dwGainFlagsDWORD4+68+68ゲイン制御に対応するフックスイッチデバイスを示すビットフラグ。
dwDisplayNumRowsDWORD4+72+72ディスプレイの行数を示す。表示なしなら0。
dwDisplayNumColumnsDWORD4+76+76ディスプレイの桁数を示す。表示なしなら0。
dwNumRingModesDWORD4+80+80サポートする呼出音モードの数を示す。
dwNumButtonLampsDWORD4+84+84ボタンランプの数を示す。
dwButtonModesSizeDWORD4+88+88ボタンモードリストのサイズをバイト単位で示す。
dwButtonModesOffsetDWORD4+92+92ボタンモードリストへのバイトオフセットを示す。
dwButtonFunctionsSizeDWORD4+96+96ボタン機能リストのサイズをバイト単位で示す。
dwButtonFunctionsOffsetDWORD4+100+100ボタン機能リストへのバイトオフセットを示す。
dwLampModesSizeDWORD4+104+104ランプモードリストのサイズをバイト単位で示す。
dwLampModesOffsetDWORD4+108+108ランプモードリストへのバイトオフセットを示す。
dwNumSetDataDWORD4+112+112電話機に設定可能なデータバッファの数を示す。
dwSetDataSizeDWORD4+116+116設定可能データ情報のサイズをバイト単位で示す。
dwSetDataOffsetDWORD4+120+120設定可能データ情報へのバイトオフセットを示す。
dwNumGetDataDWORD4+124+124電話機から取得可能なデータバッファの数を示す。
dwGetDataSizeDWORD4+128+128取得可能データ情報のサイズをバイト単位で示す。
dwGetDataOffsetDWORD4+132+132取得可能データ情報へのバイトオフセットを示す。
dwDevSpecificSizeDWORD4+136+136デバイス固有情報のサイズをバイト単位で示す。
dwDevSpecificOffsetDWORD4+140+140デバイス固有情報へのバイトオフセットを示す。
dwDeviceClassesSizeDWORD4+144+144対応デバイスクラス名リストのサイズをバイト単位で示す。
dwDeviceClassesOffsetDWORD4+148+148対応デバイスクラス名リストへのバイトオフセットを示す。
dwPhoneFeaturesDWORD4+152+152電話機が現在対応する機能を示すPHONEFEATUREビットフラグ。
dwSettableHandsetHookSwitchModesDWORD4+156+156ハンドセットで設定可能なフックスイッチモードを示すビットフラグ。
dwSettableSpeakerHookSwitchModesDWORD4+160+160スピーカーで設定可能なフックスイッチモードを示すビットフラグ。
dwSettableHeadsetHookSwitchModesDWORD4+164+164ヘッドセットで設定可能なフックスイッチモードを示すビットフラグ。
dwMonitoredHandsetHookSwitchModesDWORD4+168+168ハンドセットで監視可能なフックスイッチモードを示すビットフラグ。
dwMonitoredSpeakerHookSwitchModesDWORD4+172+172スピーカーで監視可能なフックスイッチモードを示すビットフラグ。
dwMonitoredHeadsetHookSwitchModesDWORD4+176+176ヘッドセットで監視可能なフックスイッチモードを示すビットフラグ。
PermanentPhoneGuidGUID16+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 Structure
import 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: GUID
align(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