ホーム › Devices.Tapi › LINEDEVSTATUS
LINEDEVSTATUS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwTotalSize | DWORD | 4 | +0 | +0 | この構造体に割り当てられた総サイズをバイトで表す。 |
| dwNeededSize | DWORD | 4 | +4 | +4 | 全情報の格納に必要なサイズをバイトで表す。 |
| dwUsedSize | DWORD | 4 | +8 | +8 | 実際に使用されたサイズをバイトで表す。 |
| dwNumOpens | DWORD | 4 | +12 | +12 | この回線を開いているアプリケーションの数を表す。 |
| dwOpenMediaModes | DWORD | 4 | +16 | +16 | 開かれている呼が使用中のメディアモードを示すフラグ。 |
| dwNumActiveCalls | DWORD | 4 | +20 | +20 | アクティブな呼の数を表す。 |
| dwNumOnHoldCalls | DWORD | 4 | +24 | +24 | 保留中の呼の数を表す。 |
| dwNumOnHoldPendCalls | DWORD | 4 | +28 | +28 | 保留保留中の呼の数を表す。 |
| dwLineFeatures | DWORD | 4 | +32 | +32 | 現在利用可能な回線機能を示すフラグ。 |
| dwNumCallCompletions | DWORD | 4 | +36 | +36 | 現在保留中の呼完了要求の数を表す。 |
| dwRingMode | DWORD | 4 | +40 | +40 | 現在の呼出パターン(リングモード)を示す値。 |
| dwSignalLevel | DWORD | 4 | +44 | +44 | 回線の信号強度(0〜0xFFFF)を表す。 |
| dwBatteryLevel | DWORD | 4 | +48 | +48 | デバイスのバッテリ残量(0〜0xFFFF)を表す。 |
| dwRoamMode | DWORD | 4 | +52 | +52 | 現在のローミング状態を示す値。 |
| dwDevStatusFlags | DWORD | 4 | +56 | +56 | デバイス状態を示すフラグ(接続/通電等)の組み合わせ。 |
| dwTerminalModesSize | DWORD | 4 | +60 | +60 | 端末モード情報のサイズをバイトで表す。 |
| dwTerminalModesOffset | DWORD | 4 | +64 | +64 | 端末モード情報までのオフセットをバイトで表す。 |
| dwDevSpecificSize | DWORD | 4 | +68 | +68 | デバイス固有情報のサイズをバイトで表す。 |
| dwDevSpecificOffset | DWORD | 4 | +72 | +72 | デバイス固有情報までのオフセットをバイトで表す。 |
| dwAvailableMediaModes | DWORD | 4 | +76 | +76 | 現在利用可能なメディアモードを示すフラグ。 |
| dwAppInfoSize | DWORD | 4 | +80 | +80 | アプリ情報リストのサイズをバイトで表す。 |
| dwAppInfoOffset | DWORD | 4 | +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 Structureimport 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: uint32align(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