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+20idleonholdonholdpendingtransferonholdpendingconference 以外の呼状態にある、回線上の呼の数。
dwNumOnHoldCallsDWORD4+24+24onhold 状態にある、回線上の呼の数。
dwNumOnHoldPendCallsDWORD4+28+28onholdpendingtransfer または onholdpendingconference 状態にある、回線上の呼の数。
dwLineFeaturesDWORD4+32+32この回線で現在使用可能な、回線関連の機能。このメンバーは、 LINEFEATURE_ Constants の 1 つ以上を使用します。
dwNumCallCompletionsDWORD4+36+36回線上で未処理となっている呼完了要求の数。
dwRingModeDWORD4+40+40回線デバイスの現在の呼び出し音モード。
dwSignalLevelDWORD4+44+44回線上の接続の現在の信号レベル。0x00000000 (信号が最も弱い) から 0x0000FFFF (信号が最も強い) の範囲の値です。
dwBatteryLevelDWORD4+48+48回線デバイスのハードウェアの現在のバッテリーレベル。0x00000000 (バッテリー残量なし) から 0x0000FFFF (バッテリー満充電) の範囲の値です。
dwRoamModeDWORD4+52+52回線デバイスの現在のローミングモード。このメンバーは、 LINEROAMMODE_ Constants の 1 つを使用します。
dwDevStatusFlagsDWORD4+56+56デバイスがロックされているかどうかなど、状態情報を示すフラグ。 LINEDEVSTATUSFLAGS_ Constants の 1 つ以上のメンバーで構成されます。
dwTerminalModesSizeDWORD4+60+60現在の端末モードの配列を格納する、可変サイズのデバイスフィールドのサイズ (バイト単位)。
dwTerminalModesOffsetDWORD4+64+64構造体の先頭から、現在の端末モードの配列までのオフセット (バイト単位)。この配列は、0 から dwNumTerminals から 1 を引いた値までの範囲の端末 ID でインデックス付けされます。配列の各エントリは、この回線に対して lineSetTerminal 関数を使用して設定された、対応する端末の現在の端末モードを指定します。各エントリは DWORD であり、 LINETERMMODE_ Constants の 1 つ以上を指定します。配列のサイズは dwTerminalModesSize で指定されます。
dwDevSpecificSizeDWORD4+68+68可変サイズのデバイス固有フィールドのサイズ (バイト単位)。デバイス固有情報が文字列へのポインターである場合、サイズには null 終端文字を含めなければなりません。
dwDevSpecificOffsetDWORD4+72+72構造体の先頭から、デバイス固有フィールドまでのオフセット (バイト単位)。このフィールドのサイズは dwDevSpecificSize で指定されます。
dwAvailableMediaModesDWORD4+76+76dwLineFeatures メンバーが新しい呼の作成が可能であることを示している場合に、この回線デバイス上で作成される新しい呼で使用できるメディア型を示します。このメンバーが 0 の場合、サービスプロバイダーがどのメディア型を使用できるかを認識していないか、示すことができないことを意味します。その場合は、 LINEDEVCAPSdwMediaModes メンバーで示されるメディア型のいずれか、またはすべてが使用可能である可能性があります。
dwAppInfoSizeDWORD4+80+80回線を開いているアプリケーションを識別する配列のサイズ (バイト単位)。
dwAppInfoOffsetDWORD4+84+84構造体の先頭から、 LINEAPPINFO 構造体の配列までのオフセット (バイト単位)。dwNumOpens メンバーは、配列内の要素数を示します。配列内の各要素は、回線を開いているアプリケーションを識別します。配列のサイズは dwAppInfoSize で指定されます。

公式ドキュメント

LINEDEVSTATUS 構造体は、回線デバイスの現在の状態を記述します。 lineGetLineDevStatus 関数および TSPI_lineGetLineDevStatus 関数は、 LINEDEVSTATUS 構造体を返します。

解説(Remarks)

デバイス固有の拡張では、このデータ構造体の可変サイズ領域である DevSpecific (dwDevSpecificSize および dwDevSpecificOffset) を使用してください。

dwAvailableMediaModes から dwAppInfoOffset までのメンバーは、API バージョン 2.0 以降で回線デバイスを開いたアプリケーションでのみ使用できます。

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

各言語での定義

#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