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

LINEDEVSTATUS

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

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

フィールド

フィールドサイズx64x86説明
dwTotalSizeDWORD4+0+0この構造体に割り当てられた総サイズをバイトで表す。
dwNeededSizeDWORD4+4+4全情報の格納に必要なサイズをバイトで表す。
dwUsedSizeDWORD4+8+8実際に使用されたサイズをバイトで表す。
dwNumOpensDWORD4+12+12この回線を開いているアプリケーションの数を表す。
dwOpenMediaModesDWORD4+16+16開かれている呼が使用中のメディアモードを示すフラグ。
dwNumActiveCallsDWORD4+20+20アクティブな呼の数を表す。
dwNumOnHoldCallsDWORD4+24+24保留中の呼の数を表す。
dwNumOnHoldPendCallsDWORD4+28+28保留保留中の呼の数を表す。
dwLineFeaturesDWORD4+32+32現在利用可能な回線機能を示すフラグ。
dwNumCallCompletionsDWORD4+36+36現在保留中の呼完了要求の数を表す。
dwRingModeDWORD4+40+40現在の呼出パターン(リングモード)を示す値。
dwSignalLevelDWORD4+44+44回線の信号強度(0〜0xFFFF)を表す。
dwBatteryLevelDWORD4+48+48デバイスのバッテリ残量(0〜0xFFFF)を表す。
dwRoamModeDWORD4+52+52現在のローミング状態を示す値。
dwDevStatusFlagsDWORD4+56+56デバイス状態を示すフラグ(接続/通電等)の組み合わせ。
dwTerminalModesSizeDWORD4+60+60端末モード情報のサイズをバイトで表す。
dwTerminalModesOffsetDWORD4+64+64端末モード情報までのオフセットをバイトで表す。
dwDevSpecificSizeDWORD4+68+68デバイス固有情報のサイズをバイトで表す。
dwDevSpecificOffsetDWORD4+72+72デバイス固有情報までのオフセットをバイトで表す。
dwAvailableMediaModesDWORD4+76+76現在利用可能なメディアモードを示すフラグ。
dwAppInfoSizeDWORD4+80+80アプリ情報リストのサイズをバイトで表す。
dwAppInfoOffsetDWORD4+84+84アプリ情報(LINEAPPINFO配列)までのオフセット。

各言語での定義

#include <windows.h>

// LINEDEVSTATUS  (x64 88 / x86 88 バイト)
#pragma pack(push, 1)
typedef struct LINEDEVSTATUS {
    DWORD dwTotalSize;
    DWORD dwNeededSize;
    DWORD dwUsedSize;
    DWORD dwNumOpens;
    DWORD dwOpenMediaModes;
    DWORD dwNumActiveCalls;
    DWORD dwNumOnHoldCalls;
    DWORD dwNumOnHoldPendCalls;
    DWORD dwLineFeatures;
    DWORD dwNumCallCompletions;
    DWORD dwRingMode;
    DWORD dwSignalLevel;
    DWORD dwBatteryLevel;
    DWORD dwRoamMode;
    DWORD dwDevStatusFlags;
    DWORD dwTerminalModesSize;
    DWORD dwTerminalModesOffset;
    DWORD dwDevSpecificSize;
    DWORD dwDevSpecificOffset;
    DWORD dwAvailableMediaModes;
    DWORD dwAppInfoSize;
    DWORD dwAppInfoOffset;
} LINEDEVSTATUS;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct LINEDEVSTATUS
{
    public uint dwTotalSize;
    public uint dwNeededSize;
    public uint dwUsedSize;
    public uint dwNumOpens;
    public uint dwOpenMediaModes;
    public uint dwNumActiveCalls;
    public uint dwNumOnHoldCalls;
    public uint dwNumOnHoldPendCalls;
    public uint dwLineFeatures;
    public uint dwNumCallCompletions;
    public uint dwRingMode;
    public uint dwSignalLevel;
    public uint dwBatteryLevel;
    public uint dwRoamMode;
    public uint dwDevStatusFlags;
    public uint dwTerminalModesSize;
    public uint dwTerminalModesOffset;
    public uint dwDevSpecificSize;
    public uint dwDevSpecificOffset;
    public uint dwAvailableMediaModes;
    public uint dwAppInfoSize;
    public uint dwAppInfoOffset;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure LINEDEVSTATUS
    Public dwTotalSize As UInteger
    Public dwNeededSize As UInteger
    Public dwUsedSize As UInteger
    Public dwNumOpens As UInteger
    Public dwOpenMediaModes As UInteger
    Public dwNumActiveCalls As UInteger
    Public dwNumOnHoldCalls As UInteger
    Public dwNumOnHoldPendCalls As UInteger
    Public dwLineFeatures As UInteger
    Public dwNumCallCompletions As UInteger
    Public dwRingMode As UInteger
    Public dwSignalLevel As UInteger
    Public dwBatteryLevel As UInteger
    Public dwRoamMode As UInteger
    Public dwDevStatusFlags As UInteger
    Public dwTerminalModesSize As UInteger
    Public dwTerminalModesOffset As UInteger
    Public dwDevSpecificSize As UInteger
    Public dwDevSpecificOffset As UInteger
    Public dwAvailableMediaModes As UInteger
    Public dwAppInfoSize As UInteger
    Public dwAppInfoOffset As UInteger
End Structure
import ctypes
from ctypes import wintypes

class LINEDEVSTATUS(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("dwTotalSize", wintypes.DWORD),
        ("dwNeededSize", wintypes.DWORD),
        ("dwUsedSize", wintypes.DWORD),
        ("dwNumOpens", wintypes.DWORD),
        ("dwOpenMediaModes", wintypes.DWORD),
        ("dwNumActiveCalls", wintypes.DWORD),
        ("dwNumOnHoldCalls", wintypes.DWORD),
        ("dwNumOnHoldPendCalls", wintypes.DWORD),
        ("dwLineFeatures", wintypes.DWORD),
        ("dwNumCallCompletions", wintypes.DWORD),
        ("dwRingMode", wintypes.DWORD),
        ("dwSignalLevel", wintypes.DWORD),
        ("dwBatteryLevel", wintypes.DWORD),
        ("dwRoamMode", wintypes.DWORD),
        ("dwDevStatusFlags", wintypes.DWORD),
        ("dwTerminalModesSize", wintypes.DWORD),
        ("dwTerminalModesOffset", wintypes.DWORD),
        ("dwDevSpecificSize", wintypes.DWORD),
        ("dwDevSpecificOffset", wintypes.DWORD),
        ("dwAvailableMediaModes", wintypes.DWORD),
        ("dwAppInfoSize", wintypes.DWORD),
        ("dwAppInfoOffset", wintypes.DWORD),
    ]
#[repr(C, packed(1))]
pub struct LINEDEVSTATUS {
    pub dwTotalSize: u32,
    pub dwNeededSize: u32,
    pub dwUsedSize: u32,
    pub dwNumOpens: u32,
    pub dwOpenMediaModes: u32,
    pub dwNumActiveCalls: u32,
    pub dwNumOnHoldCalls: u32,
    pub dwNumOnHoldPendCalls: u32,
    pub dwLineFeatures: u32,
    pub dwNumCallCompletions: u32,
    pub dwRingMode: u32,
    pub dwSignalLevel: u32,
    pub dwBatteryLevel: u32,
    pub dwRoamMode: u32,
    pub dwDevStatusFlags: u32,
    pub dwTerminalModesSize: u32,
    pub dwTerminalModesOffset: u32,
    pub dwDevSpecificSize: u32,
    pub dwDevSpecificOffset: u32,
    pub dwAvailableMediaModes: u32,
    pub dwAppInfoSize: u32,
    pub dwAppInfoOffset: u32,
}
import "golang.org/x/sys/windows"

type LINEDEVSTATUS struct {
	dwTotalSize uint32
	dwNeededSize uint32
	dwUsedSize uint32
	dwNumOpens uint32
	dwOpenMediaModes uint32
	dwNumActiveCalls uint32
	dwNumOnHoldCalls uint32
	dwNumOnHoldPendCalls uint32
	dwLineFeatures uint32
	dwNumCallCompletions uint32
	dwRingMode uint32
	dwSignalLevel uint32
	dwBatteryLevel uint32
	dwRoamMode uint32
	dwDevStatusFlags uint32
	dwTerminalModesSize uint32
	dwTerminalModesOffset uint32
	dwDevSpecificSize uint32
	dwDevSpecificOffset uint32
	dwAvailableMediaModes uint32
	dwAppInfoSize uint32
	dwAppInfoOffset uint32
}
type
  LINEDEVSTATUS = packed record
    dwTotalSize: DWORD;
    dwNeededSize: DWORD;
    dwUsedSize: DWORD;
    dwNumOpens: DWORD;
    dwOpenMediaModes: DWORD;
    dwNumActiveCalls: DWORD;
    dwNumOnHoldCalls: DWORD;
    dwNumOnHoldPendCalls: DWORD;
    dwLineFeatures: DWORD;
    dwNumCallCompletions: DWORD;
    dwRingMode: DWORD;
    dwSignalLevel: DWORD;
    dwBatteryLevel: DWORD;
    dwRoamMode: DWORD;
    dwDevStatusFlags: DWORD;
    dwTerminalModesSize: DWORD;
    dwTerminalModesOffset: DWORD;
    dwDevSpecificSize: DWORD;
    dwDevSpecificOffset: DWORD;
    dwAvailableMediaModes: DWORD;
    dwAppInfoSize: DWORD;
    dwAppInfoOffset: DWORD;
  end;
const LINEDEVSTATUS = extern struct {
    dwTotalSize: u32,
    dwNeededSize: u32,
    dwUsedSize: u32,
    dwNumOpens: u32,
    dwOpenMediaModes: u32,
    dwNumActiveCalls: u32,
    dwNumOnHoldCalls: u32,
    dwNumOnHoldPendCalls: u32,
    dwLineFeatures: u32,
    dwNumCallCompletions: u32,
    dwRingMode: u32,
    dwSignalLevel: u32,
    dwBatteryLevel: u32,
    dwRoamMode: u32,
    dwDevStatusFlags: u32,
    dwTerminalModesSize: u32,
    dwTerminalModesOffset: u32,
    dwDevSpecificSize: u32,
    dwDevSpecificOffset: u32,
    dwAvailableMediaModes: u32,
    dwAppInfoSize: u32,
    dwAppInfoOffset: u32,
};
type
  LINEDEVSTATUS {.packed.} = object
    dwTotalSize: uint32
    dwNeededSize: uint32
    dwUsedSize: uint32
    dwNumOpens: uint32
    dwOpenMediaModes: uint32
    dwNumActiveCalls: uint32
    dwNumOnHoldCalls: uint32
    dwNumOnHoldPendCalls: uint32
    dwLineFeatures: uint32
    dwNumCallCompletions: uint32
    dwRingMode: uint32
    dwSignalLevel: uint32
    dwBatteryLevel: uint32
    dwRoamMode: uint32
    dwDevStatusFlags: uint32
    dwTerminalModesSize: uint32
    dwTerminalModesOffset: uint32
    dwDevSpecificSize: uint32
    dwDevSpecificOffset: uint32
    dwAvailableMediaModes: uint32
    dwAppInfoSize: uint32
    dwAppInfoOffset: uint32
align(1)
struct LINEDEVSTATUS
{
    uint dwTotalSize;
    uint dwNeededSize;
    uint dwUsedSize;
    uint dwNumOpens;
    uint dwOpenMediaModes;
    uint dwNumActiveCalls;
    uint dwNumOnHoldCalls;
    uint dwNumOnHoldPendCalls;
    uint dwLineFeatures;
    uint dwNumCallCompletions;
    uint dwRingMode;
    uint dwSignalLevel;
    uint dwBatteryLevel;
    uint dwRoamMode;
    uint dwDevStatusFlags;
    uint dwTerminalModesSize;
    uint dwTerminalModesOffset;
    uint dwDevSpecificSize;
    uint dwDevSpecificOffset;
    uint dwAvailableMediaModes;
    uint dwAppInfoSize;
    uint dwAppInfoOffset;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; LINEDEVSTATUS サイズ: 88 バイト(x64)
dim st, 22    ; 4byte整数×22(構造体サイズ 88 / 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 も可)
; dwNumOpens : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwOpenMediaModes : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwNumActiveCalls : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwNumOnHoldCalls : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwNumOnHoldPendCalls : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwLineFeatures : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwNumCallCompletions : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwRingMode : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; dwSignalLevel : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwBatteryLevel : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwRoamMode : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; dwDevStatusFlags : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; dwTerminalModesSize : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; dwTerminalModesOffset : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; dwDevSpecificSize : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; dwDevSpecificOffset : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; dwAvailableMediaModes : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; dwAppInfoSize : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; dwAppInfoOffset : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global LINEDEVSTATUS, pack=1
    #field int dwTotalSize
    #field int dwNeededSize
    #field int dwUsedSize
    #field int dwNumOpens
    #field int dwOpenMediaModes
    #field int dwNumActiveCalls
    #field int dwNumOnHoldCalls
    #field int dwNumOnHoldPendCalls
    #field int dwLineFeatures
    #field int dwNumCallCompletions
    #field int dwRingMode
    #field int dwSignalLevel
    #field int dwBatteryLevel
    #field int dwRoamMode
    #field int dwDevStatusFlags
    #field int dwTerminalModesSize
    #field int dwTerminalModesOffset
    #field int dwDevSpecificSize
    #field int dwDevSpecificOffset
    #field int dwAvailableMediaModes
    #field int dwAppInfoSize
    #field int dwAppInfoOffset
#endstruct

stdim st, LINEDEVSTATUS        ; NSTRUCT 変数を確保
st->dwTotalSize = 100
mes "dwTotalSize=" + st->dwTotalSize