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

MODEMDEVCAPS

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

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

フィールド

フィールドサイズx64x86説明
dwActualSizeDWORD4+0+0アプリケーションに実際に返されたデータのサイズ (バイト単位)。アプリケーションが構造体の可変長部分に十分な領域を割り当てなかった場合、このメンバーは dwRequiredSize メンバーより小さくなることがあります。
dwRequiredSizeDWORD4+4+4可変長部分を含む MODEMDEVCAPS 構造体全体に必要なバイト数。
dwDevSpecificOffsetDWORD4+8+8構造体のうちプロバイダー定義部分のオフセット。構造体の先頭を基準としたバイト単位で指定されます。
dwDevSpecificSizeDWORD4+12+12構造体のうちプロバイダー定義部分のサイズ (バイト単位)。
dwModemProviderVersionDWORD4+16+16サービス プロバイダーのバージョン。このメンバーの形式と用途はサービス プロバイダーによって異なります。
dwModemManufacturerOffsetDWORD4+20+20モデムの製造元名を格納するテキスト文字列のオフセット。構造体の先頭を基準としたバイト単位で指定されます。
dwModemManufacturerSizeDWORD4+24+24モデムの製造元名の長さ (バイト単位)。この文字列は NULL で終端されていません。
dwModemModelOffsetDWORD4+28+28モデムのモデル名を格納するテキスト文字列のオフセット。構造体の先頭を基準としたバイト単位で指定されます。
dwModemModelSizeDWORD4+32+32モデル名の長さ (バイト単位)。この文字列は NULL で終端されていません。
dwModemVersionOffsetDWORD4+36+36プロバイダーが情報を取得できた場合に、接続されているモデムのバージョンとリビジョンを示すテキスト文字列のオフセット。オフセットは構造体の先頭を基準としたバイト単位で指定されます。
dwModemVersionSizeDWORD4+40+40モデムのバージョン文字列の長さ (バイト単位)。この文字列は NULL で終端されていません。
dwDialOptionsMODEMDEVCAPS_DIAL_OPTIONS4+44+44

モデム デバイスがサポートするダイヤル オプション。このメンバーには、0 または次の値の 1 つ以上を指定できます。

意味
DIALOPTION_BILLING
0x00000040
モデムは課金トーン (bong) の待機をサポートします。
DIALOPTION_DIALTONE
0x00000100
モデムはダイヤル トーンの待機をサポートします。
DIALOPTION_QUIET
0x00000080
モデムは無音状態の待機をサポートします。
dwCallSetupFailTimerDWORD4+48+48モデムがサポートする呼設定タイムアウトの最大値 (秒単位)。これは MODEMSETTINGS 構造体の対応するメンバーに指定できる最大値です。
dwInactivityTimeoutDWORD4+52+52モデムがサポートする無通信タイムアウトの最大値 (10 分の 1 秒単位)。これは MODEMSETTINGS 構造体の対応するメンバーに指定できる最大値です。
dwSpeakerVolumeMODEMDEVCAPS_SPEAKER_VOLUME4+56+56

モデムがサポートするスピーカー音量の設定。このメンバーには、0 または次の値の 1 つ以上を指定できます。

意味
MDMVOLFLAG_HIGH
0x00000004
モデムは大音量 (MDMVOL_HIGH) をサポートします。
MDMVOLFLAG_LOW
0x00000001
モデムは小音量 (MDMVOL_LOW) をサポートします。
MDMVOLFLAG_MEDIUM
0x00000002
モデムは中音量 (MDMVOL_MEDIUM) をサポートします。
dwSpeakerModeMODEMDEVCAPS_SPEAKER_MODE4+60+60

モデムがサポートするスピーカー モードの設定。このメンバーには、0 または次の値の 1 つ以上を指定できます。

意味
MDMSPKRFLAG_CALLSETUP
0x00000008
モデムは MDMSPKR_CALLSETUP スピーカー モードをサポートします。
MDMSPKRFLAG_DIAL
0x00000002
モデムは MDMSPKR_DIAL スピーカー モードをサポートします。
MDMSPKRFLAG_OFF
0x00000001
モデムは MDMSPKR_OFF スピーカー モードをサポートします。
MDMSPKRFLAG_ON
0x00000004
モデムは MDMSPKR_ON スピーカー モードをサポートします。
dwModemOptionsDWORD4+64+64

モデムのオプション。このメンバーには、0 または次の値の 1 つ以上を指定できます。

MDM_BLIND_DIAL (0x00000200)

MDM_CCITT_OVERRIDE (0x00000040)

MDM_CELLULAR (0x00000008)

MDM_COMPRESSION (0x00000001)

MDM_DIAGNOSTICS (0x000000800)

MDM_ERROR_CONTROL (0x00000002)

MDM_FLOWCONTROL_HARD (0x00000010)

MDM_FLOWCONTROL_SOFT (0x00000020)

MDM_FORCED_EC (0x00000004)

MDM_SPEED_ADJUST (0x00000080)

MDM_TONE_DIAL (0x00000100)

MDM_V23_OVERRIDE (0x00000400)

MODEMDEVCAPSMODEMSETTINGS 構造体の一部としてモデムのオプションの設定に使用する場合、これらの値は次のように使用されます。

意味
MDM_CCITT_OVERRIDE
0x00000040
設定されている場合、V.21 および V.22 または V.23 の CCITT 変調が有効になります。

クリアされている場合、103 および 212A のベル変調が有効になります。

MDM_V23_OVERRIDE
0x00000400
設定されている場合、V.23 の CCITT 変調が有効になります。

クリアされている場合、V.21 および V.22 の CCITT 変調が有効になります。

V.23 を設定するには、MDM_CCITT_OVERRIDEMDM_V23_OVERRIDE の両方が設定されていなければなりません。

dwMaxDTERateDWORD4+68+68DTE の最大レート (ビット/秒)。
dwMaxDCERateDWORD4+72+72DCE の最大レート (ビット/秒)。
abVariablePortionBYTE1+76+76文字列やプロバイダー定義の情報を含む、可変長の情報。

公式ドキュメント

モデムの機能に関する情報を格納します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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