ホーム › Devices.Tapi › LINEADDRESSSTATUS
LINEADDRESSSTATUS
構造体サイズ=各フィールドのバイト数(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 | 実際に使用されたサイズをバイトで表す。 |
| dwNumInUse | DWORD | 4 | +12 | +12 | このアドレスを使用中のステーションの数を表す。 |
| dwNumActiveCalls | DWORD | 4 | +16 | +16 | アクティブな呼の数を表す。 |
| dwNumOnHoldCalls | DWORD | 4 | +20 | +20 | 保留中の呼の数を表す。 |
| dwNumOnHoldPendCalls | DWORD | 4 | +24 | +24 | 保留保留中の呼の数を表す。 |
| dwAddressFeatures | DWORD | 4 | +28 | +28 | 現在利用可能なアドレス機能を示すフラグ。 |
| dwNumRingsNoAnswer | DWORD | 4 | +32 | +32 | 無応答転送までの現在の呼出回数を表す。 |
| dwForwardNumEntries | DWORD | 4 | +36 | +36 | 現在有効な転送エントリの数を表す。 |
| dwForwardSize | DWORD | 4 | +40 | +40 | 転送情報のサイズをバイトで表す。 |
| dwForwardOffset | DWORD | 4 | +44 | +44 | 転送情報(LINEFORWARD配列)までのオフセット。 |
| dwTerminalModesSize | DWORD | 4 | +48 | +48 | 端末モード情報のサイズをバイトで表す。 |
| dwTerminalModesOffset | DWORD | 4 | +52 | +52 | 端末モード情報までのオフセットをバイトで表す。 |
| dwDevSpecificSize | DWORD | 4 | +56 | +56 | デバイス固有情報のサイズをバイトで表す。 |
| dwDevSpecificOffset | DWORD | 4 | +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 Structureimport 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: uint32align(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