ホーム › Devices.Communication › MODEMDEVCAPS
MODEMDEVCAPS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwActualSize | DWORD | 4 | +0 | +0 | この構造体の実際のバイト単位サイズを示す。 |
| dwRequiredSize | DWORD | 4 | +4 | +4 | 全データ格納に必要なバイト単位サイズを示す。 |
| dwDevSpecificOffset | DWORD | 4 | +8 | +8 | デバイス固有データへの構造体先頭からのオフセットを示す。 |
| dwDevSpecificSize | DWORD | 4 | +12 | +12 | デバイス固有データのバイト単位サイズを示す。 |
| dwModemProviderVersion | DWORD | 4 | +16 | +16 | モデムプロバイダのバージョン番号を示す。 |
| dwModemManufacturerOffset | DWORD | 4 | +20 | +20 | 製造元名文字列へのオフセットを示す。 |
| dwModemManufacturerSize | DWORD | 4 | +24 | +24 | 製造元名文字列のバイト単位サイズを示す。 |
| dwModemModelOffset | DWORD | 4 | +28 | +28 | モデム機種名文字列へのオフセットを示す。 |
| dwModemModelSize | DWORD | 4 | +32 | +32 | モデム機種名文字列のバイト単位サイズを示す。 |
| dwModemVersionOffset | DWORD | 4 | +36 | +36 | モデムバージョン文字列へのオフセットを示す。 |
| dwModemVersionSize | DWORD | 4 | +40 | +40 | モデムバージョン文字列のバイト単位サイズを示す。 |
| dwDialOptions | MODEMDEVCAPS_DIAL_OPTIONS | 4 | +44 | +44 | サポートされるダイヤルオプションを示すフラグ。 |
| dwCallSetupFailTimer | DWORD | 4 | +48 | +48 | 通話確立失敗までの最大待機時間を秒単位で示す。 |
| dwInactivityTimeout | DWORD | 4 | +52 | +52 | 無通信切断までの最大待機時間を秒単位で示す。 |
| dwSpeakerVolume | MODEMDEVCAPS_SPEAKER_VOLUME | 4 | +56 | +56 | サポートされるスピーカー音量レベルを示すフラグ。 |
| dwSpeakerMode | MODEMDEVCAPS_SPEAKER_MODE | 4 | +60 | +60 | サポートされるスピーカーモードを示すフラグ。 |
| dwModemOptions | DWORD | 4 | +64 | +64 | サポートされるモデムオプションを示すフラグ。 |
| dwMaxDTERate | DWORD | 4 | +68 | +68 | DTE(端末)とモデム間の最大通信速度をbps単位で示す。 |
| dwMaxDCERate | DWORD | 4 | +72 | +72 | DCE(回線)側の最大通信速度をbps単位で示す。 |
| abVariablePortion | BYTE | 1 | +76 | +76 | 可変長データ部の先頭。文字列やデバイス固有データを保持する。 |
各言語での定義
#include <windows.h>
// MODEMDEVCAPS (x64 80 / x86 80 バイト)
typedef struct MODEMDEVCAPS {
DWORD dwActualSize;
DWORD dwRequiredSize;
DWORD dwDevSpecificOffset;
DWORD dwDevSpecificSize;
DWORD dwModemProviderVersion;
DWORD dwModemManufacturerOffset;
DWORD dwModemManufacturerSize;
DWORD dwModemModelOffset;
DWORD dwModemModelSize;
DWORD dwModemVersionOffset;
DWORD dwModemVersionSize;
MODEMDEVCAPS_DIAL_OPTIONS dwDialOptions;
DWORD dwCallSetupFailTimer;
DWORD dwInactivityTimeout;
MODEMDEVCAPS_SPEAKER_VOLUME dwSpeakerVolume;
MODEMDEVCAPS_SPEAKER_MODE dwSpeakerMode;
DWORD dwModemOptions;
DWORD dwMaxDTERate;
DWORD dwMaxDCERate;
BYTE abVariablePortion[1];
} MODEMDEVCAPS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MODEMDEVCAPS
{
public uint dwActualSize;
public uint dwRequiredSize;
public uint dwDevSpecificOffset;
public uint dwDevSpecificSize;
public uint dwModemProviderVersion;
public uint dwModemManufacturerOffset;
public uint dwModemManufacturerSize;
public uint dwModemModelOffset;
public uint dwModemModelSize;
public uint dwModemVersionOffset;
public uint dwModemVersionSize;
public uint dwDialOptions;
public uint dwCallSetupFailTimer;
public uint dwInactivityTimeout;
public uint dwSpeakerVolume;
public uint dwSpeakerMode;
public uint dwModemOptions;
public uint dwMaxDTERate;
public uint dwMaxDCERate;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)] public byte[] abVariablePortion;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MODEMDEVCAPS
Public dwActualSize As UInteger
Public dwRequiredSize As UInteger
Public dwDevSpecificOffset As UInteger
Public dwDevSpecificSize As UInteger
Public dwModemProviderVersion As UInteger
Public dwModemManufacturerOffset As UInteger
Public dwModemManufacturerSize As UInteger
Public dwModemModelOffset As UInteger
Public dwModemModelSize As UInteger
Public dwModemVersionOffset As UInteger
Public dwModemVersionSize As UInteger
Public dwDialOptions As UInteger
Public dwCallSetupFailTimer As UInteger
Public dwInactivityTimeout As UInteger
Public dwSpeakerVolume As UInteger
Public dwSpeakerMode As UInteger
Public dwModemOptions As UInteger
Public dwMaxDTERate As UInteger
Public dwMaxDCERate As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=1)> Public abVariablePortion() As Byte
End Structureimport ctypes
from ctypes import wintypes
class MODEMDEVCAPS(ctypes.Structure):
_fields_ = [
("dwActualSize", wintypes.DWORD),
("dwRequiredSize", wintypes.DWORD),
("dwDevSpecificOffset", wintypes.DWORD),
("dwDevSpecificSize", wintypes.DWORD),
("dwModemProviderVersion", wintypes.DWORD),
("dwModemManufacturerOffset", wintypes.DWORD),
("dwModemManufacturerSize", wintypes.DWORD),
("dwModemModelOffset", wintypes.DWORD),
("dwModemModelSize", wintypes.DWORD),
("dwModemVersionOffset", wintypes.DWORD),
("dwModemVersionSize", wintypes.DWORD),
("dwDialOptions", wintypes.DWORD),
("dwCallSetupFailTimer", wintypes.DWORD),
("dwInactivityTimeout", wintypes.DWORD),
("dwSpeakerVolume", wintypes.DWORD),
("dwSpeakerMode", wintypes.DWORD),
("dwModemOptions", wintypes.DWORD),
("dwMaxDTERate", wintypes.DWORD),
("dwMaxDCERate", wintypes.DWORD),
("abVariablePortion", ctypes.c_ubyte * 1),
]#[repr(C)]
pub struct MODEMDEVCAPS {
pub dwActualSize: u32,
pub dwRequiredSize: u32,
pub dwDevSpecificOffset: u32,
pub dwDevSpecificSize: u32,
pub dwModemProviderVersion: u32,
pub dwModemManufacturerOffset: u32,
pub dwModemManufacturerSize: u32,
pub dwModemModelOffset: u32,
pub dwModemModelSize: u32,
pub dwModemVersionOffset: u32,
pub dwModemVersionSize: u32,
pub dwDialOptions: u32,
pub dwCallSetupFailTimer: u32,
pub dwInactivityTimeout: u32,
pub dwSpeakerVolume: u32,
pub dwSpeakerMode: u32,
pub dwModemOptions: u32,
pub dwMaxDTERate: u32,
pub dwMaxDCERate: u32,
pub abVariablePortion: [u8; 1],
}import "golang.org/x/sys/windows"
type MODEMDEVCAPS struct {
dwActualSize uint32
dwRequiredSize uint32
dwDevSpecificOffset uint32
dwDevSpecificSize uint32
dwModemProviderVersion uint32
dwModemManufacturerOffset uint32
dwModemManufacturerSize uint32
dwModemModelOffset uint32
dwModemModelSize uint32
dwModemVersionOffset uint32
dwModemVersionSize uint32
dwDialOptions uint32
dwCallSetupFailTimer uint32
dwInactivityTimeout uint32
dwSpeakerVolume uint32
dwSpeakerMode uint32
dwModemOptions uint32
dwMaxDTERate uint32
dwMaxDCERate uint32
abVariablePortion [1]byte
}type
MODEMDEVCAPS = record
dwActualSize: DWORD;
dwRequiredSize: DWORD;
dwDevSpecificOffset: DWORD;
dwDevSpecificSize: DWORD;
dwModemProviderVersion: DWORD;
dwModemManufacturerOffset: DWORD;
dwModemManufacturerSize: DWORD;
dwModemModelOffset: DWORD;
dwModemModelSize: DWORD;
dwModemVersionOffset: DWORD;
dwModemVersionSize: DWORD;
dwDialOptions: DWORD;
dwCallSetupFailTimer: DWORD;
dwInactivityTimeout: DWORD;
dwSpeakerVolume: DWORD;
dwSpeakerMode: DWORD;
dwModemOptions: DWORD;
dwMaxDTERate: DWORD;
dwMaxDCERate: DWORD;
abVariablePortion: array[0..0] of Byte;
end;const MODEMDEVCAPS = extern struct {
dwActualSize: u32,
dwRequiredSize: u32,
dwDevSpecificOffset: u32,
dwDevSpecificSize: u32,
dwModemProviderVersion: u32,
dwModemManufacturerOffset: u32,
dwModemManufacturerSize: u32,
dwModemModelOffset: u32,
dwModemModelSize: u32,
dwModemVersionOffset: u32,
dwModemVersionSize: u32,
dwDialOptions: u32,
dwCallSetupFailTimer: u32,
dwInactivityTimeout: u32,
dwSpeakerVolume: u32,
dwSpeakerMode: u32,
dwModemOptions: u32,
dwMaxDTERate: u32,
dwMaxDCERate: u32,
abVariablePortion: [1]u8,
};type
MODEMDEVCAPS {.bycopy.} = object
dwActualSize: uint32
dwRequiredSize: uint32
dwDevSpecificOffset: uint32
dwDevSpecificSize: uint32
dwModemProviderVersion: uint32
dwModemManufacturerOffset: uint32
dwModemManufacturerSize: uint32
dwModemModelOffset: uint32
dwModemModelSize: uint32
dwModemVersionOffset: uint32
dwModemVersionSize: uint32
dwDialOptions: uint32
dwCallSetupFailTimer: uint32
dwInactivityTimeout: uint32
dwSpeakerVolume: uint32
dwSpeakerMode: uint32
dwModemOptions: uint32
dwMaxDTERate: uint32
dwMaxDCERate: uint32
abVariablePortion: array[1, uint8]struct MODEMDEVCAPS
{
uint dwActualSize;
uint dwRequiredSize;
uint dwDevSpecificOffset;
uint dwDevSpecificSize;
uint dwModemProviderVersion;
uint dwModemManufacturerOffset;
uint dwModemManufacturerSize;
uint dwModemModelOffset;
uint dwModemModelSize;
uint dwModemVersionOffset;
uint dwModemVersionSize;
uint dwDialOptions;
uint dwCallSetupFailTimer;
uint dwInactivityTimeout;
uint dwSpeakerVolume;
uint dwSpeakerMode;
uint dwModemOptions;
uint dwMaxDTERate;
uint dwMaxDCERate;
ubyte[1] abVariablePortion;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MODEMDEVCAPS サイズ: 80 バイト(x64)
dim st, 20 ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; dwActualSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwRequiredSize : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwDevSpecificOffset : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwDevSpecificSize : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwModemProviderVersion : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwModemManufacturerOffset : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwModemManufacturerSize : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; dwModemModelOffset : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; dwModemModelSize : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; dwModemVersionOffset : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; dwModemVersionSize : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; dwDialOptions : MODEMDEVCAPS_DIAL_OPTIONS (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; dwCallSetupFailTimer : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; dwInactivityTimeout : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; dwSpeakerVolume : MODEMDEVCAPS_SPEAKER_VOLUME (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; dwSpeakerMode : MODEMDEVCAPS_SPEAKER_MODE (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; dwModemOptions : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; dwMaxDTERate : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; dwMaxDCERate : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; abVariablePortion : BYTE (+76, 1byte) varptr(st)+76 を基点に操作(1byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MODEMDEVCAPS
#field int dwActualSize
#field int dwRequiredSize
#field int dwDevSpecificOffset
#field int dwDevSpecificSize
#field int dwModemProviderVersion
#field int dwModemManufacturerOffset
#field int dwModemManufacturerSize
#field int dwModemModelOffset
#field int dwModemModelSize
#field int dwModemVersionOffset
#field int dwModemVersionSize
#field int dwDialOptions
#field int dwCallSetupFailTimer
#field int dwInactivityTimeout
#field int dwSpeakerVolume
#field int dwSpeakerMode
#field int dwModemOptions
#field int dwMaxDTERate
#field int dwMaxDCERate
#field byte abVariablePortion 1
#endstruct
stdim st, MODEMDEVCAPS ; NSTRUCT 変数を確保
st->dwActualSize = 100
mes "dwActualSize=" + st->dwActualSize