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

LINEADDRESSSTATUS

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

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

フィールド

フィールドサイズx64x86説明
dwTotalSizeDWORD4+0+0この構造体に割り当てられた総サイズをバイトで表す。
dwNeededSizeDWORD4+4+4全情報の格納に必要なサイズをバイトで表す。
dwUsedSizeDWORD4+8+8実際に使用されたサイズをバイトで表す。
dwNumInUseDWORD4+12+12このアドレスを使用中のステーションの数を表す。
dwNumActiveCallsDWORD4+16+16アクティブな呼の数を表す。
dwNumOnHoldCallsDWORD4+20+20保留中の呼の数を表す。
dwNumOnHoldPendCallsDWORD4+24+24保留保留中の呼の数を表す。
dwAddressFeaturesDWORD4+28+28現在利用可能なアドレス機能を示すフラグ。
dwNumRingsNoAnswerDWORD4+32+32無応答転送までの現在の呼出回数を表す。
dwForwardNumEntriesDWORD4+36+36現在有効な転送エントリの数を表す。
dwForwardSizeDWORD4+40+40転送情報のサイズをバイトで表す。
dwForwardOffsetDWORD4+44+44転送情報(LINEFORWARD配列)までのオフセット。
dwTerminalModesSizeDWORD4+48+48端末モード情報のサイズをバイトで表す。
dwTerminalModesOffsetDWORD4+52+52端末モード情報までのオフセットをバイトで表す。
dwDevSpecificSizeDWORD4+56+56デバイス固有情報のサイズをバイトで表す。
dwDevSpecificOffsetDWORD4+60+60デバイス固有情報までのオフセットをバイトで表す。

各言語での定義

#include <windows.h>

// LINEADDRESSSTATUS  (x64 64 / x86 64 バイト)
#pragma pack(push, 1)
typedef struct LINEADDRESSSTATUS {
    DWORD dwTotalSize;
    DWORD dwNeededSize;
    DWORD dwUsedSize;
    DWORD dwNumInUse;
    DWORD dwNumActiveCalls;
    DWORD dwNumOnHoldCalls;
    DWORD dwNumOnHoldPendCalls;
    DWORD dwAddressFeatures;
    DWORD dwNumRingsNoAnswer;
    DWORD dwForwardNumEntries;
    DWORD dwForwardSize;
    DWORD dwForwardOffset;
    DWORD dwTerminalModesSize;
    DWORD dwTerminalModesOffset;
    DWORD dwDevSpecificSize;
    DWORD dwDevSpecificOffset;
} LINEADDRESSSTATUS;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct LINEADDRESSSTATUS
{
    public uint dwTotalSize;
    public uint dwNeededSize;
    public uint dwUsedSize;
    public uint dwNumInUse;
    public uint dwNumActiveCalls;
    public uint dwNumOnHoldCalls;
    public uint dwNumOnHoldPendCalls;
    public uint dwAddressFeatures;
    public uint dwNumRingsNoAnswer;
    public uint dwForwardNumEntries;
    public uint dwForwardSize;
    public uint dwForwardOffset;
    public uint dwTerminalModesSize;
    public uint dwTerminalModesOffset;
    public uint dwDevSpecificSize;
    public uint dwDevSpecificOffset;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure LINEADDRESSSTATUS
    Public dwTotalSize As UInteger
    Public dwNeededSize As UInteger
    Public dwUsedSize As UInteger
    Public dwNumInUse As UInteger
    Public dwNumActiveCalls As UInteger
    Public dwNumOnHoldCalls As UInteger
    Public dwNumOnHoldPendCalls As UInteger
    Public dwAddressFeatures As UInteger
    Public dwNumRingsNoAnswer As UInteger
    Public dwForwardNumEntries As UInteger
    Public dwForwardSize As UInteger
    Public dwForwardOffset As UInteger
    Public dwTerminalModesSize As UInteger
    Public dwTerminalModesOffset As UInteger
    Public dwDevSpecificSize As UInteger
    Public dwDevSpecificOffset As UInteger
End Structure
import ctypes
from ctypes import wintypes

class LINEADDRESSSTATUS(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("dwTotalSize", wintypes.DWORD),
        ("dwNeededSize", wintypes.DWORD),
        ("dwUsedSize", wintypes.DWORD),
        ("dwNumInUse", wintypes.DWORD),
        ("dwNumActiveCalls", wintypes.DWORD),
        ("dwNumOnHoldCalls", wintypes.DWORD),
        ("dwNumOnHoldPendCalls", wintypes.DWORD),
        ("dwAddressFeatures", wintypes.DWORD),
        ("dwNumRingsNoAnswer", wintypes.DWORD),
        ("dwForwardNumEntries", wintypes.DWORD),
        ("dwForwardSize", wintypes.DWORD),
        ("dwForwardOffset", wintypes.DWORD),
        ("dwTerminalModesSize", wintypes.DWORD),
        ("dwTerminalModesOffset", wintypes.DWORD),
        ("dwDevSpecificSize", wintypes.DWORD),
        ("dwDevSpecificOffset", wintypes.DWORD),
    ]
#[repr(C, packed(1))]
pub struct LINEADDRESSSTATUS {
    pub dwTotalSize: u32,
    pub dwNeededSize: u32,
    pub dwUsedSize: u32,
    pub dwNumInUse: u32,
    pub dwNumActiveCalls: u32,
    pub dwNumOnHoldCalls: u32,
    pub dwNumOnHoldPendCalls: u32,
    pub dwAddressFeatures: u32,
    pub dwNumRingsNoAnswer: u32,
    pub dwForwardNumEntries: u32,
    pub dwForwardSize: u32,
    pub dwForwardOffset: u32,
    pub dwTerminalModesSize: u32,
    pub dwTerminalModesOffset: u32,
    pub dwDevSpecificSize: u32,
    pub dwDevSpecificOffset: u32,
}
import "golang.org/x/sys/windows"

type LINEADDRESSSTATUS struct {
	dwTotalSize uint32
	dwNeededSize uint32
	dwUsedSize uint32
	dwNumInUse uint32
	dwNumActiveCalls uint32
	dwNumOnHoldCalls uint32
	dwNumOnHoldPendCalls uint32
	dwAddressFeatures uint32
	dwNumRingsNoAnswer uint32
	dwForwardNumEntries uint32
	dwForwardSize uint32
	dwForwardOffset uint32
	dwTerminalModesSize uint32
	dwTerminalModesOffset uint32
	dwDevSpecificSize uint32
	dwDevSpecificOffset uint32
}
type
  LINEADDRESSSTATUS = packed record
    dwTotalSize: DWORD;
    dwNeededSize: DWORD;
    dwUsedSize: DWORD;
    dwNumInUse: DWORD;
    dwNumActiveCalls: DWORD;
    dwNumOnHoldCalls: DWORD;
    dwNumOnHoldPendCalls: DWORD;
    dwAddressFeatures: DWORD;
    dwNumRingsNoAnswer: DWORD;
    dwForwardNumEntries: DWORD;
    dwForwardSize: DWORD;
    dwForwardOffset: DWORD;
    dwTerminalModesSize: DWORD;
    dwTerminalModesOffset: DWORD;
    dwDevSpecificSize: DWORD;
    dwDevSpecificOffset: DWORD;
  end;
const LINEADDRESSSTATUS = extern struct {
    dwTotalSize: u32,
    dwNeededSize: u32,
    dwUsedSize: u32,
    dwNumInUse: u32,
    dwNumActiveCalls: u32,
    dwNumOnHoldCalls: u32,
    dwNumOnHoldPendCalls: u32,
    dwAddressFeatures: u32,
    dwNumRingsNoAnswer: u32,
    dwForwardNumEntries: u32,
    dwForwardSize: u32,
    dwForwardOffset: u32,
    dwTerminalModesSize: u32,
    dwTerminalModesOffset: u32,
    dwDevSpecificSize: u32,
    dwDevSpecificOffset: u32,
};
type
  LINEADDRESSSTATUS {.packed.} = object
    dwTotalSize: uint32
    dwNeededSize: uint32
    dwUsedSize: uint32
    dwNumInUse: uint32
    dwNumActiveCalls: uint32
    dwNumOnHoldCalls: uint32
    dwNumOnHoldPendCalls: uint32
    dwAddressFeatures: uint32
    dwNumRingsNoAnswer: uint32
    dwForwardNumEntries: uint32
    dwForwardSize: uint32
    dwForwardOffset: uint32
    dwTerminalModesSize: uint32
    dwTerminalModesOffset: uint32
    dwDevSpecificSize: uint32
    dwDevSpecificOffset: uint32
align(1)
struct LINEADDRESSSTATUS
{
    uint dwTotalSize;
    uint dwNeededSize;
    uint dwUsedSize;
    uint dwNumInUse;
    uint dwNumActiveCalls;
    uint dwNumOnHoldCalls;
    uint dwNumOnHoldPendCalls;
    uint dwAddressFeatures;
    uint dwNumRingsNoAnswer;
    uint dwForwardNumEntries;
    uint dwForwardSize;
    uint dwForwardOffset;
    uint dwTerminalModesSize;
    uint dwTerminalModesOffset;
    uint dwDevSpecificSize;
    uint dwDevSpecificOffset;
}

HSP用 定義

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

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

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