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

MODEMDEVCAPS

構造体
サイズx64: 80 バイト / x86: 80 バイト

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

フィールド

フィールドサイズx64x86説明
dwActualSizeDWORD4+0+0この構造体の実際のバイト単位サイズを示す。
dwRequiredSizeDWORD4+4+4全データ格納に必要なバイト単位サイズを示す。
dwDevSpecificOffsetDWORD4+8+8デバイス固有データへの構造体先頭からのオフセットを示す。
dwDevSpecificSizeDWORD4+12+12デバイス固有データのバイト単位サイズを示す。
dwModemProviderVersionDWORD4+16+16モデムプロバイダのバージョン番号を示す。
dwModemManufacturerOffsetDWORD4+20+20製造元名文字列へのオフセットを示す。
dwModemManufacturerSizeDWORD4+24+24製造元名文字列のバイト単位サイズを示す。
dwModemModelOffsetDWORD4+28+28モデム機種名文字列へのオフセットを示す。
dwModemModelSizeDWORD4+32+32モデム機種名文字列のバイト単位サイズを示す。
dwModemVersionOffsetDWORD4+36+36モデムバージョン文字列へのオフセットを示す。
dwModemVersionSizeDWORD4+40+40モデムバージョン文字列のバイト単位サイズを示す。
dwDialOptionsMODEMDEVCAPS_DIAL_OPTIONS4+44+44サポートされるダイヤルオプションを示すフラグ。
dwCallSetupFailTimerDWORD4+48+48通話確立失敗までの最大待機時間を秒単位で示す。
dwInactivityTimeoutDWORD4+52+52無通信切断までの最大待機時間を秒単位で示す。
dwSpeakerVolumeMODEMDEVCAPS_SPEAKER_VOLUME4+56+56サポートされるスピーカー音量レベルを示すフラグ。
dwSpeakerModeMODEMDEVCAPS_SPEAKER_MODE4+60+60サポートされるスピーカーモードを示すフラグ。
dwModemOptionsDWORD4+64+64サポートされるモデムオプションを示すフラグ。
dwMaxDTERateDWORD4+68+68DTE(端末)とモデム間の最大通信速度をbps単位で示す。
dwMaxDCERateDWORD4+72+72DCE(回線)側の最大通信速度をbps単位で示す。
abVariablePortionBYTE1+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 Structure
import 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