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+16idleonholdonholdpendingtransferonholdpendingconference 以外の通話状態にある、このアドレス上の通話の数。
dwNumOnHoldCallsDWORD4+20+20onhold 状態にある、このアドレス上の通話の数。
dwNumOnHoldPendCallsDWORD4+24+24onholdpendingtransfer または onholdpendingconference 状態にある、このアドレス上の通話の数。
dwAddressFeaturesDWORD4+28+28現在の状態でこのアドレスに対して呼び出すことができる、アドレス関連の機能。このメンバーは、 LINEADDRFEATURE_ 定数 の 1 つ以上を使用します。
dwNumRingsNoAnswerDWORD4+32+32応答のない通話が無応答と見なされるまでに、このアドレスに対して設定されている呼び出し音の回数。
dwForwardNumEntriesDWORD4+36+36dwForwardSize および dwForwardOffset が参照する配列内のエントリ数。
dwForwardSizeDWORD4+40+40転送情報配列のサイズ (バイト単位)。
dwForwardOffsetDWORD4+44+44構造体の先頭から、アドレスの転送情報を記述する可変サイズのフィールドまでのオフセット。この情報は、 LINEFORWARD 型の要素 dwForwardNumEntries 個からなる配列です。配列内のアドレスのオフセットは、 LINEADDRESSSTATUS 構造体の先頭からの相対値です。dwForwardOffset が指す LINEFORWARD 型の可変サイズフィールド内のオフセット dwCallerAddressOffset および dwDestAddressOffset は、 LINEADDRESSSTATUS データ構造体 (「ルート」コンテナー) の先頭からの相対値です。配列のサイズは dwForwardSize で指定されます。
dwTerminalModesSizeDWORD4+48+48ターミナルモード配列のサイズ (バイト単位)。
dwTerminalModesOffsetDWORD4+52+52構造体の先頭から、DWORD サイズのエントリを持つ配列を含む可変サイズのデバイスフィールドまでのオフセット。各エントリは、 LINETERMMODE_ 定数 の 1 つ以上を使用します。この配列は、0 から dwNumTerminals より 1 小さい値までの範囲のターミナル識別子でインデックス付けされます。配列の各エントリは、このアドレスに対して lineSetTerminal 関数で設定された、対応するターミナルの現在のターミナルモードを指定します。配列のサイズは dwTerminalModesSize で指定されます。
dwDevSpecificSizeDWORD4+56+56デバイス固有フィールドのサイズ (バイト単位)。
dwDevSpecificOffsetDWORD4+60+60この構造体の先頭から、可変サイズのデバイス固有フィールドまでのオフセット。このフィールドのサイズは dwDevSpecificSize で指定されます。

公式ドキュメント

LINEADDRESSSTATUS 構造体は、アドレスの現在の状態を記述します。 lineGetAddressStatus 関数および TSPI_lineGetAddressStatus 関数は、 LINEADDRESSSTATUS 構造体を返します。

解説(Remarks)

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

このデータ構造体は、 lineGetAddressStatus 関数によって返されます。アドレス上のアクティビティの結果としてこのデータ構造体内の項目が変化すると、 LINE_ADDRESSSTATE メッセージがアプリケーションに送信されます。このメッセージのパラメーターはアドレス状態で、 LINEADDRESSSTATE_ 定数 のいずれかであり、このレコード内のどのステータス項目が変化したかを示します。

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

各言語での定義

#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