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

LINECALLPARAMS

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

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

フィールド

フィールドサイズx64x86説明
dwTotalSizeDWORD4+0+0このデータ構造体に割り当てられた合計サイズ (バイト単位)。このサイズは、このデータ構造体の固定サイズ部分と可変サイズ部分をすべて格納できる大きさでなければなりません。
dwBearerModeDWORD4+4+4

通話のベアラーモード。このメンバーは LINEBEARERMODE_ 定数 のいずれかを使用します。

dwBearerMode が 0 の場合、既定値は LINEBEARERMODE_VOICE です。

dwMinRateDWORD4+8+8通話のデータストリームに要求する最小データレート (bps: ビット/秒)。
dwMaxRateDWORD4+12+12通話のデータストリームに要求する最大データレート (bps: ビット/秒)。通話を発信するとき、サービスプロバイダーは要求された範囲 (dwMinRate から dwMaxRate まで) の中で利用可能な最高のレートを提供しようとします。特定のデータレートが必要な場合は、dwMinRatedwMaxRate の両方にその値を設定します。アプリケーションが特定のレートで最適に動作しつつ、より低いレートにも対応できる場合は、それぞれ最大レートと最小レートとして指定します。dwMaxRate が 0 の場合、既定値は LINEDEVCAPS 構造体の dwMaxRate メンバーで指定された値になります。これはデバイスがサポートする最大レートです。
dwMediaModeDWORD4+16+16

通話で想定されるメディアタイプ。このメンバーは LINEMEDIAMODE_ 定数 のいずれかを使用します。

dwMediaMode が 0 の場合、既定値は LINEMEDIAMODE_INTERACTIVEVOICE です。

dwCallParamFlagsDWORD4+20+20ブール型の呼設定パラメーターの集合。このメンバーは LINECALLPARAMFLAGS_ 定数 の 1 つ以上を使用します。
dwAddressModeDWORD4+24+24

発信元アドレスの指定方法を表すモード。このメンバーは LINEADDRESSMODE_ 定数 のいずれかを使用します。

lineOpen 関数の呼び出しでは、dwAddressMode メンバーに LINEADDRESSMODE_ADDRESSID を指定できません。ただし、この制限は lineMakeCall には適用されません。
dwAddressIDDWORD4+28+28dwAddressModeLINEADDRESSMODE_ADDRESSID が設定されている場合の、発信元アドレスのアドレス識別子。アドレス識別子はアドレスに恒久的に関連付けられており、オペレーティングシステムをアップグレードしても変わりません。
DialParamsLINEDIALPARAMS16+32+32この通話で使用するダイヤルパラメーター。型は LINEDIALPARAMS です。このフィールドに 0 を指定した場合は、 LINEDEVCAPS 構造体の DefaultDialParams メンバーに示された既定値が使用されます。LINEDEVCAPS 構造体の MinDialParams および MaxDialParams の対応するフィールドで指定される範囲外の 0 以外の値を指定した場合は、有効な範囲内で最も近い値が代わりに使用されます。
dwOrigAddressSizeDWORD4+48+48発信元アドレスフィールドのサイズ (バイト単位)。
dwOrigAddressOffsetDWORD4+52+52構造体の先頭から、発信元アドレスを保持する可変サイズフィールドまでのオフセット。このアドレスの形式は dwAddressMode メンバーによって異なります。フィールドのサイズは dwOrigAddressSize で指定します。
dwDisplayableAddressSizeDWORD4+56+56null 終端文字を含む、表示可能文字列のサイズ (バイト単位)。
dwDisplayableAddressOffsetDWORD4+60+60ログ記録のために使用される表示可能文字列。これらのメンバーの内容は、通話の LINECALLINFO メッセージの dwDisplayableAddressOffset メンバーおよび dwDisplayableAddressSize メンバーに記録されます。 lineTranslateAddress 関数は、このフィールドに設定するのに適した情報を LINETRANSLATEOUTPUT 構造体の dwDisplayableAddressSize メンバーおよび dwDisplayableAddressOffset メンバーで返します。フィールドのサイズは dwDisplayableAddressSize で指定します。
dwCalledPartySizeDWORD4+64+64着信先情報のサイズ (バイト単位)。
dwCalledPartyOffsetDWORD4+68+68構造体の先頭から、着信先情報を保持する可変サイズフィールドまでのオフセット。この情報は通話を発信するアプリケーションが指定でき、ログ記録のために通話の情報構造体で参照できます。このフィールドの形式は、 LINEDEVCAPS で指定される dwStringFormat の形式です。フィールドのサイズは dwCalledPartySize で指定します。
dwCommentSizeDWORD4+72+72通話コメントフィールドのサイズ (バイト単位)。
dwCommentOffsetDWORD4+76+76構造体の先頭から、通話に関するコメントを保持する可変サイズフィールドまでのオフセット。この情報は通話を発信するアプリケーションが指定でき、ログ記録のために通話の情報構造体で参照できます。このフィールドの形式は、 LINEDEVCAPS で指定される dwStringFormat の形式です。フィールドのサイズは dwCommentSize で指定します。
dwUserUserInfoSizeDWORD4+80+80null 終端文字を含む、ユーザー間情報のサイズ (バイト単位)。
dwUserUserInfoOffsetDWORD4+84+84構造体の先頭から、ユーザー間情報を保持する可変サイズフィールドまでのオフセット。ユーザー間情報のプロトコル識別子フィールドが必要な場合は、dwUserUserInfoOffset が指すデータの先頭バイトに配置し、dwUserUserInfoSize にもそのサイズを含める必要があります。
dwHighLevelCompSizeDWORD4+88+88高位互換性情報のサイズ (バイト単位)。
dwHighLevelCompOffsetDWORD4+92+92構造体の先頭から、高位互換性情報を保持する可変サイズフィールドまでのオフセット。フィールドのサイズは dwHighLevelCompSize で指定します。
dwLowLevelCompSizeDWORD4+96+96低位互換性情報のサイズ (バイト単位)。
dwLowLevelCompOffsetDWORD4+100+100構造体の先頭から、低位互換性情報を保持する可変サイズフィールドまでのオフセット。フィールドのサイズは dwLowLevelCompSize で指定します。
dwDevSpecificSizeDWORD4+104+104デバイス固有情報のサイズ (バイト単位)。
dwDevSpecificOffsetDWORD4+108+108構造体の先頭から、デバイス固有情報を保持する可変サイズフィールドまでのオフセット。フィールドのサイズは dwDevSpecificSize で指定します。
dwPredictiveAutoTransferStatesDWORD4+112+112LINECALLSTATE_ 定数。ここで指定した状態に遷移すると、通話は指定されたターゲットアドレスへブラインド転送されます。自動転送が不要な場合は 0 を設定します。
dwTargetAddressSizeDWORD4+116+116null 終端文字を含む、ダイヤル可能なターゲットアドレス文字列のサイズ (バイト単位)。
dwTargetAddressOffsetDWORD4+120+120

構造体の先頭から、ダイヤル可能なターゲットアドレス (dwAddressID ではありません) を指定する文字列までのオフセット。特定の自動動作を行う場合に使用します。予測ダイヤルの場合は、通話を自動的に転送する先のアドレスを指定します。文字列のサイズは dwTargetAddressSize で指定します。

これは、自動転送を使用しない場合に lineBlindTransfer に渡す文字列と基本的に同じものです。自動転送が不要な場合は 0 を設定します。ノーホールド会議の場合は、通話に会議接続するアドレスを指定します。ワンステップ転送の場合は、相談通話でダイヤルするアドレスを指定します。

dwSendingFlowspecSizeDWORD4+124+124サービス品質情報のサイズ (バイト単位)。
dwSendingFlowspecOffsetDWORD4+128+128構造体の先頭から、 FLOWSPEC 構造体とそれに続く WinSock プロバイダー固有データまでのオフセット。これは QOS 構造体の SendingFlowspec に格納される内容に相当します。通話の送信方向で要求するサービス品質を指定します。FLOWSPEC 構造体に続くプロバイダー固有部分には、他のメモリブロックへのポインターを含めてはなりません。TAPI は、プライベートポインターが指すデータをマーシャリングし、プロセス間通信でアプリケーションへ伝える方法を認識しないためです。フィールドのサイズは dwSendingFlowspecSize で指定します。
dwReceivingFlowspecSizeDWORD4+132+132サービス品質情報のサイズ (バイト単位)。
dwReceivingFlowspecOffsetDWORD4+136+136構造体の先頭から、FLOWSPEC 構造体とそれに続く WinSock プロバイダー固有データまでのオフセット。これは QOS 構造体の ReceivingFlowspec に格納される内容に相当します。通話の受信方向で要求するサービス品質を指定します。FLOWSPEC 構造体に続くプロバイダー固有部分には、他のメモリブロックへのポインターを含めてはなりません。TAPI は、プライベートポインターが指すデータをマーシャリングし、プロセス間通信でアプリケーションへ伝える方法を認識しないためです。フィールドのサイズは dwReceivingFlowspecSize で指定します。
dwDeviceClassSizeDWORD4+140+140null 終端文字を含む、デバイスクラス文字列のサイズ (バイト単位)。
dwDeviceClassOffsetDWORD4+144+144構造体の先頭から、DeviceConfig で構成が指定されるデバイスのデバイスクラスを示す null 終端文字列までのオフセット。有効なデバイスクラス文字列は、 lineGetID 関数で指定されるものと同じです。文字列のサイズは dwDeviceClassSize で指定します。
dwDeviceConfigSizeDWORD4+148+148デバイス構成データのサイズ (バイト単位)。
dwDeviceConfigOffsetDWORD4+152+152構造体の先頭から、不透明な構成データ構造体までのオフセット。この値は、 lineGetDevConfig が返す VARSTRING 構造体の dwStringSize メンバーで返されます。サイズが 0 の場合は、既定のデバイス構成が使用されます。これにより、アプリケーションは通話を開始する前にデバイス構成を設定できます。フィールドのサイズは dwDeviceConfigSize で指定します。
dwCallDataSizeDWORD4+156+156アプリケーションが設定可能な通話データのサイズ (バイト単位)。
dwCallDataOffsetDWORD4+160+160構造体の先頭から、通話に最初に関連付けられる、アプリケーションが設定可能な通話データまでのオフセット。フィールドのサイズは dwCallDataSize で指定します。
dwNoAnswerTimeoutDWORD4+164+164ダイヤル完了後、通話が PROCEEDING 状態または RINGBACK 状態で待機することを許可する秒数。この時間を過ぎると、サービスプロバイダーは LINECALLSTATE_DISCONNECTED および LINEDISCONNECTMODE_NOANSWER によって通話を自動的に破棄します。値が 0 の場合は、アプリケーションが通話の自動破棄を必要としないことを示します。
dwCallingPartyIDSizeDWORD4+168+168null 終端文字を含む、発信者 ID 文字列のサイズ (バイト単位)。null 終端文字も含みます。
dwCallingPartyIDOffsetDWORD4+172+172構造体の先頭から、通話を発信する側の識別情報を指定する null 終端文字列までのオフセット。識別子の内容が受け入れ可能で、経路が利用できる場合、サービスプロバイダーは発信者の識別情報を示すためにその識別子を着信側へ渡します。フィールドのサイズは dwCallingPartyIDSize で指定します。

公式ドキュメント

LINECALLPARAMS 構造体は、 lineMakeCall 関数および TSPI_lineMakeCall 関数を使用して通話を発信する際に指定するパラメーターを記述します。 LINECALLPARAMS 構造体は、 lineOpen 関数など他の操作のパラメーターとしても使用されます。

構文ブロックの右側にあるコメントは、この構造体を lineMakeCall に指定しなかった場合に使用される既定値を示します。

解説(Remarks)

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

この構造体は、通話を設定する際に lineMakeCall のパラメーターとして使用されます。そのフィールドにより、アプリケーションはネットワークに要求するサービス品質のほか、さまざまな ISDN 呼設定パラメーターを指定できます。 lineMakeCallLINECALLPARAMS 構造体を指定しなかった場合は、上記の既定値を使用して既定の POTS 音声品質通話が要求されます。

DialParams から dwDevSpecificOffset までのフィールドは、 lineOpen 関数に lpCallParams パラメーターを指定した場合は無視されます。
dwPredictiveAutoTransferStates から dwCallingPartyIDOffset までのメンバーは、API バージョン 2.0 以降で回線デバイスを開いたアプリケーションでのみ使用できます。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// LINEDIALPARAMS  (x64 16 / x86 16 バイト)
#pragma pack(push, 1)
typedef struct LINEDIALPARAMS {
    DWORD dwDialPause;
    DWORD dwDialSpeed;
    DWORD dwDigitDuration;
    DWORD dwWaitForDialtone;
} LINEDIALPARAMS;
#pragma pack(pop)

// LINECALLPARAMS  (x64 176 / x86 176 バイト)
#pragma pack(push, 1)
typedef struct LINECALLPARAMS {
    DWORD dwTotalSize;
    DWORD dwBearerMode;
    DWORD dwMinRate;
    DWORD dwMaxRate;
    DWORD dwMediaMode;
    DWORD dwCallParamFlags;
    DWORD dwAddressMode;
    DWORD dwAddressID;
    LINEDIALPARAMS DialParams;
    DWORD dwOrigAddressSize;
    DWORD dwOrigAddressOffset;
    DWORD dwDisplayableAddressSize;
    DWORD dwDisplayableAddressOffset;
    DWORD dwCalledPartySize;
    DWORD dwCalledPartyOffset;
    DWORD dwCommentSize;
    DWORD dwCommentOffset;
    DWORD dwUserUserInfoSize;
    DWORD dwUserUserInfoOffset;
    DWORD dwHighLevelCompSize;
    DWORD dwHighLevelCompOffset;
    DWORD dwLowLevelCompSize;
    DWORD dwLowLevelCompOffset;
    DWORD dwDevSpecificSize;
    DWORD dwDevSpecificOffset;
    DWORD dwPredictiveAutoTransferStates;
    DWORD dwTargetAddressSize;
    DWORD dwTargetAddressOffset;
    DWORD dwSendingFlowspecSize;
    DWORD dwSendingFlowspecOffset;
    DWORD dwReceivingFlowspecSize;
    DWORD dwReceivingFlowspecOffset;
    DWORD dwDeviceClassSize;
    DWORD dwDeviceClassOffset;
    DWORD dwDeviceConfigSize;
    DWORD dwDeviceConfigOffset;
    DWORD dwCallDataSize;
    DWORD dwCallDataOffset;
    DWORD dwNoAnswerTimeout;
    DWORD dwCallingPartyIDSize;
    DWORD dwCallingPartyIDOffset;
} LINECALLPARAMS;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct LINEDIALPARAMS
{
    public uint dwDialPause;
    public uint dwDialSpeed;
    public uint dwDigitDuration;
    public uint dwWaitForDialtone;
}

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct LINECALLPARAMS
{
    public uint dwTotalSize;
    public uint dwBearerMode;
    public uint dwMinRate;
    public uint dwMaxRate;
    public uint dwMediaMode;
    public uint dwCallParamFlags;
    public uint dwAddressMode;
    public uint dwAddressID;
    public LINEDIALPARAMS DialParams;
    public uint dwOrigAddressSize;
    public uint dwOrigAddressOffset;
    public uint dwDisplayableAddressSize;
    public uint dwDisplayableAddressOffset;
    public uint dwCalledPartySize;
    public uint dwCalledPartyOffset;
    public uint dwCommentSize;
    public uint dwCommentOffset;
    public uint dwUserUserInfoSize;
    public uint dwUserUserInfoOffset;
    public uint dwHighLevelCompSize;
    public uint dwHighLevelCompOffset;
    public uint dwLowLevelCompSize;
    public uint dwLowLevelCompOffset;
    public uint dwDevSpecificSize;
    public uint dwDevSpecificOffset;
    public uint dwPredictiveAutoTransferStates;
    public uint dwTargetAddressSize;
    public uint dwTargetAddressOffset;
    public uint dwSendingFlowspecSize;
    public uint dwSendingFlowspecOffset;
    public uint dwReceivingFlowspecSize;
    public uint dwReceivingFlowspecOffset;
    public uint dwDeviceClassSize;
    public uint dwDeviceClassOffset;
    public uint dwDeviceConfigSize;
    public uint dwDeviceConfigOffset;
    public uint dwCallDataSize;
    public uint dwCallDataOffset;
    public uint dwNoAnswerTimeout;
    public uint dwCallingPartyIDSize;
    public uint dwCallingPartyIDOffset;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure LINEDIALPARAMS
    Public dwDialPause As UInteger
    Public dwDialSpeed As UInteger
    Public dwDigitDuration As UInteger
    Public dwWaitForDialtone As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure LINECALLPARAMS
    Public dwTotalSize As UInteger
    Public dwBearerMode As UInteger
    Public dwMinRate As UInteger
    Public dwMaxRate As UInteger
    Public dwMediaMode As UInteger
    Public dwCallParamFlags As UInteger
    Public dwAddressMode As UInteger
    Public dwAddressID As UInteger
    Public DialParams As LINEDIALPARAMS
    Public dwOrigAddressSize As UInteger
    Public dwOrigAddressOffset As UInteger
    Public dwDisplayableAddressSize As UInteger
    Public dwDisplayableAddressOffset As UInteger
    Public dwCalledPartySize As UInteger
    Public dwCalledPartyOffset As UInteger
    Public dwCommentSize As UInteger
    Public dwCommentOffset As UInteger
    Public dwUserUserInfoSize As UInteger
    Public dwUserUserInfoOffset As UInteger
    Public dwHighLevelCompSize As UInteger
    Public dwHighLevelCompOffset As UInteger
    Public dwLowLevelCompSize As UInteger
    Public dwLowLevelCompOffset As UInteger
    Public dwDevSpecificSize As UInteger
    Public dwDevSpecificOffset As UInteger
    Public dwPredictiveAutoTransferStates As UInteger
    Public dwTargetAddressSize As UInteger
    Public dwTargetAddressOffset As UInteger
    Public dwSendingFlowspecSize As UInteger
    Public dwSendingFlowspecOffset As UInteger
    Public dwReceivingFlowspecSize As UInteger
    Public dwReceivingFlowspecOffset As UInteger
    Public dwDeviceClassSize As UInteger
    Public dwDeviceClassOffset As UInteger
    Public dwDeviceConfigSize As UInteger
    Public dwDeviceConfigOffset As UInteger
    Public dwCallDataSize As UInteger
    Public dwCallDataOffset As UInteger
    Public dwNoAnswerTimeout As UInteger
    Public dwCallingPartyIDSize As UInteger
    Public dwCallingPartyIDOffset As UInteger
End Structure
import ctypes
from ctypes import wintypes

class LINEDIALPARAMS(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("dwDialPause", wintypes.DWORD),
        ("dwDialSpeed", wintypes.DWORD),
        ("dwDigitDuration", wintypes.DWORD),
        ("dwWaitForDialtone", wintypes.DWORD),
    ]

class LINECALLPARAMS(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("dwTotalSize", wintypes.DWORD),
        ("dwBearerMode", wintypes.DWORD),
        ("dwMinRate", wintypes.DWORD),
        ("dwMaxRate", wintypes.DWORD),
        ("dwMediaMode", wintypes.DWORD),
        ("dwCallParamFlags", wintypes.DWORD),
        ("dwAddressMode", wintypes.DWORD),
        ("dwAddressID", wintypes.DWORD),
        ("DialParams", LINEDIALPARAMS),
        ("dwOrigAddressSize", wintypes.DWORD),
        ("dwOrigAddressOffset", wintypes.DWORD),
        ("dwDisplayableAddressSize", wintypes.DWORD),
        ("dwDisplayableAddressOffset", wintypes.DWORD),
        ("dwCalledPartySize", wintypes.DWORD),
        ("dwCalledPartyOffset", wintypes.DWORD),
        ("dwCommentSize", wintypes.DWORD),
        ("dwCommentOffset", wintypes.DWORD),
        ("dwUserUserInfoSize", wintypes.DWORD),
        ("dwUserUserInfoOffset", wintypes.DWORD),
        ("dwHighLevelCompSize", wintypes.DWORD),
        ("dwHighLevelCompOffset", wintypes.DWORD),
        ("dwLowLevelCompSize", wintypes.DWORD),
        ("dwLowLevelCompOffset", wintypes.DWORD),
        ("dwDevSpecificSize", wintypes.DWORD),
        ("dwDevSpecificOffset", wintypes.DWORD),
        ("dwPredictiveAutoTransferStates", wintypes.DWORD),
        ("dwTargetAddressSize", wintypes.DWORD),
        ("dwTargetAddressOffset", wintypes.DWORD),
        ("dwSendingFlowspecSize", wintypes.DWORD),
        ("dwSendingFlowspecOffset", wintypes.DWORD),
        ("dwReceivingFlowspecSize", wintypes.DWORD),
        ("dwReceivingFlowspecOffset", wintypes.DWORD),
        ("dwDeviceClassSize", wintypes.DWORD),
        ("dwDeviceClassOffset", wintypes.DWORD),
        ("dwDeviceConfigSize", wintypes.DWORD),
        ("dwDeviceConfigOffset", wintypes.DWORD),
        ("dwCallDataSize", wintypes.DWORD),
        ("dwCallDataOffset", wintypes.DWORD),
        ("dwNoAnswerTimeout", wintypes.DWORD),
        ("dwCallingPartyIDSize", wintypes.DWORD),
        ("dwCallingPartyIDOffset", wintypes.DWORD),
    ]
#[repr(C, packed(1))]
pub struct LINEDIALPARAMS {
    pub dwDialPause: u32,
    pub dwDialSpeed: u32,
    pub dwDigitDuration: u32,
    pub dwWaitForDialtone: u32,
}

#[repr(C, packed(1))]
pub struct LINECALLPARAMS {
    pub dwTotalSize: u32,
    pub dwBearerMode: u32,
    pub dwMinRate: u32,
    pub dwMaxRate: u32,
    pub dwMediaMode: u32,
    pub dwCallParamFlags: u32,
    pub dwAddressMode: u32,
    pub dwAddressID: u32,
    pub DialParams: LINEDIALPARAMS,
    pub dwOrigAddressSize: u32,
    pub dwOrigAddressOffset: u32,
    pub dwDisplayableAddressSize: u32,
    pub dwDisplayableAddressOffset: u32,
    pub dwCalledPartySize: u32,
    pub dwCalledPartyOffset: u32,
    pub dwCommentSize: u32,
    pub dwCommentOffset: u32,
    pub dwUserUserInfoSize: u32,
    pub dwUserUserInfoOffset: u32,
    pub dwHighLevelCompSize: u32,
    pub dwHighLevelCompOffset: u32,
    pub dwLowLevelCompSize: u32,
    pub dwLowLevelCompOffset: u32,
    pub dwDevSpecificSize: u32,
    pub dwDevSpecificOffset: u32,
    pub dwPredictiveAutoTransferStates: u32,
    pub dwTargetAddressSize: u32,
    pub dwTargetAddressOffset: u32,
    pub dwSendingFlowspecSize: u32,
    pub dwSendingFlowspecOffset: u32,
    pub dwReceivingFlowspecSize: u32,
    pub dwReceivingFlowspecOffset: u32,
    pub dwDeviceClassSize: u32,
    pub dwDeviceClassOffset: u32,
    pub dwDeviceConfigSize: u32,
    pub dwDeviceConfigOffset: u32,
    pub dwCallDataSize: u32,
    pub dwCallDataOffset: u32,
    pub dwNoAnswerTimeout: u32,
    pub dwCallingPartyIDSize: u32,
    pub dwCallingPartyIDOffset: u32,
}
import "golang.org/x/sys/windows"

type LINEDIALPARAMS struct {
	dwDialPause uint32
	dwDialSpeed uint32
	dwDigitDuration uint32
	dwWaitForDialtone uint32
}

type LINECALLPARAMS struct {
	dwTotalSize uint32
	dwBearerMode uint32
	dwMinRate uint32
	dwMaxRate uint32
	dwMediaMode uint32
	dwCallParamFlags uint32
	dwAddressMode uint32
	dwAddressID uint32
	DialParams LINEDIALPARAMS
	dwOrigAddressSize uint32
	dwOrigAddressOffset uint32
	dwDisplayableAddressSize uint32
	dwDisplayableAddressOffset uint32
	dwCalledPartySize uint32
	dwCalledPartyOffset uint32
	dwCommentSize uint32
	dwCommentOffset uint32
	dwUserUserInfoSize uint32
	dwUserUserInfoOffset uint32
	dwHighLevelCompSize uint32
	dwHighLevelCompOffset uint32
	dwLowLevelCompSize uint32
	dwLowLevelCompOffset uint32
	dwDevSpecificSize uint32
	dwDevSpecificOffset uint32
	dwPredictiveAutoTransferStates uint32
	dwTargetAddressSize uint32
	dwTargetAddressOffset uint32
	dwSendingFlowspecSize uint32
	dwSendingFlowspecOffset uint32
	dwReceivingFlowspecSize uint32
	dwReceivingFlowspecOffset uint32
	dwDeviceClassSize uint32
	dwDeviceClassOffset uint32
	dwDeviceConfigSize uint32
	dwDeviceConfigOffset uint32
	dwCallDataSize uint32
	dwCallDataOffset uint32
	dwNoAnswerTimeout uint32
	dwCallingPartyIDSize uint32
	dwCallingPartyIDOffset uint32
}
type
  LINEDIALPARAMS = packed record
    dwDialPause: DWORD;
    dwDialSpeed: DWORD;
    dwDigitDuration: DWORD;
    dwWaitForDialtone: DWORD;
  end;

  LINECALLPARAMS = packed record
    dwTotalSize: DWORD;
    dwBearerMode: DWORD;
    dwMinRate: DWORD;
    dwMaxRate: DWORD;
    dwMediaMode: DWORD;
    dwCallParamFlags: DWORD;
    dwAddressMode: DWORD;
    dwAddressID: DWORD;
    DialParams: LINEDIALPARAMS;
    dwOrigAddressSize: DWORD;
    dwOrigAddressOffset: DWORD;
    dwDisplayableAddressSize: DWORD;
    dwDisplayableAddressOffset: DWORD;
    dwCalledPartySize: DWORD;
    dwCalledPartyOffset: DWORD;
    dwCommentSize: DWORD;
    dwCommentOffset: DWORD;
    dwUserUserInfoSize: DWORD;
    dwUserUserInfoOffset: DWORD;
    dwHighLevelCompSize: DWORD;
    dwHighLevelCompOffset: DWORD;
    dwLowLevelCompSize: DWORD;
    dwLowLevelCompOffset: DWORD;
    dwDevSpecificSize: DWORD;
    dwDevSpecificOffset: DWORD;
    dwPredictiveAutoTransferStates: DWORD;
    dwTargetAddressSize: DWORD;
    dwTargetAddressOffset: DWORD;
    dwSendingFlowspecSize: DWORD;
    dwSendingFlowspecOffset: DWORD;
    dwReceivingFlowspecSize: DWORD;
    dwReceivingFlowspecOffset: DWORD;
    dwDeviceClassSize: DWORD;
    dwDeviceClassOffset: DWORD;
    dwDeviceConfigSize: DWORD;
    dwDeviceConfigOffset: DWORD;
    dwCallDataSize: DWORD;
    dwCallDataOffset: DWORD;
    dwNoAnswerTimeout: DWORD;
    dwCallingPartyIDSize: DWORD;
    dwCallingPartyIDOffset: DWORD;
  end;
const LINEDIALPARAMS = extern struct {
    dwDialPause: u32,
    dwDialSpeed: u32,
    dwDigitDuration: u32,
    dwWaitForDialtone: u32,
};

const LINECALLPARAMS = extern struct {
    dwTotalSize: u32,
    dwBearerMode: u32,
    dwMinRate: u32,
    dwMaxRate: u32,
    dwMediaMode: u32,
    dwCallParamFlags: u32,
    dwAddressMode: u32,
    dwAddressID: u32,
    DialParams: LINEDIALPARAMS,
    dwOrigAddressSize: u32,
    dwOrigAddressOffset: u32,
    dwDisplayableAddressSize: u32,
    dwDisplayableAddressOffset: u32,
    dwCalledPartySize: u32,
    dwCalledPartyOffset: u32,
    dwCommentSize: u32,
    dwCommentOffset: u32,
    dwUserUserInfoSize: u32,
    dwUserUserInfoOffset: u32,
    dwHighLevelCompSize: u32,
    dwHighLevelCompOffset: u32,
    dwLowLevelCompSize: u32,
    dwLowLevelCompOffset: u32,
    dwDevSpecificSize: u32,
    dwDevSpecificOffset: u32,
    dwPredictiveAutoTransferStates: u32,
    dwTargetAddressSize: u32,
    dwTargetAddressOffset: u32,
    dwSendingFlowspecSize: u32,
    dwSendingFlowspecOffset: u32,
    dwReceivingFlowspecSize: u32,
    dwReceivingFlowspecOffset: u32,
    dwDeviceClassSize: u32,
    dwDeviceClassOffset: u32,
    dwDeviceConfigSize: u32,
    dwDeviceConfigOffset: u32,
    dwCallDataSize: u32,
    dwCallDataOffset: u32,
    dwNoAnswerTimeout: u32,
    dwCallingPartyIDSize: u32,
    dwCallingPartyIDOffset: u32,
};
type
  LINEDIALPARAMS {.packed.} = object
    dwDialPause: uint32
    dwDialSpeed: uint32
    dwDigitDuration: uint32
    dwWaitForDialtone: uint32

  LINECALLPARAMS {.packed.} = object
    dwTotalSize: uint32
    dwBearerMode: uint32
    dwMinRate: uint32
    dwMaxRate: uint32
    dwMediaMode: uint32
    dwCallParamFlags: uint32
    dwAddressMode: uint32
    dwAddressID: uint32
    DialParams: LINEDIALPARAMS
    dwOrigAddressSize: uint32
    dwOrigAddressOffset: uint32
    dwDisplayableAddressSize: uint32
    dwDisplayableAddressOffset: uint32
    dwCalledPartySize: uint32
    dwCalledPartyOffset: uint32
    dwCommentSize: uint32
    dwCommentOffset: uint32
    dwUserUserInfoSize: uint32
    dwUserUserInfoOffset: uint32
    dwHighLevelCompSize: uint32
    dwHighLevelCompOffset: uint32
    dwLowLevelCompSize: uint32
    dwLowLevelCompOffset: uint32
    dwDevSpecificSize: uint32
    dwDevSpecificOffset: uint32
    dwPredictiveAutoTransferStates: uint32
    dwTargetAddressSize: uint32
    dwTargetAddressOffset: uint32
    dwSendingFlowspecSize: uint32
    dwSendingFlowspecOffset: uint32
    dwReceivingFlowspecSize: uint32
    dwReceivingFlowspecOffset: uint32
    dwDeviceClassSize: uint32
    dwDeviceClassOffset: uint32
    dwDeviceConfigSize: uint32
    dwDeviceConfigOffset: uint32
    dwCallDataSize: uint32
    dwCallDataOffset: uint32
    dwNoAnswerTimeout: uint32
    dwCallingPartyIDSize: uint32
    dwCallingPartyIDOffset: uint32
align(1)
struct LINEDIALPARAMS
{
    uint dwDialPause;
    uint dwDialSpeed;
    uint dwDigitDuration;
    uint dwWaitForDialtone;
}

align(1)
struct LINECALLPARAMS
{
    uint dwTotalSize;
    uint dwBearerMode;
    uint dwMinRate;
    uint dwMaxRate;
    uint dwMediaMode;
    uint dwCallParamFlags;
    uint dwAddressMode;
    uint dwAddressID;
    LINEDIALPARAMS DialParams;
    uint dwOrigAddressSize;
    uint dwOrigAddressOffset;
    uint dwDisplayableAddressSize;
    uint dwDisplayableAddressOffset;
    uint dwCalledPartySize;
    uint dwCalledPartyOffset;
    uint dwCommentSize;
    uint dwCommentOffset;
    uint dwUserUserInfoSize;
    uint dwUserUserInfoOffset;
    uint dwHighLevelCompSize;
    uint dwHighLevelCompOffset;
    uint dwLowLevelCompSize;
    uint dwLowLevelCompOffset;
    uint dwDevSpecificSize;
    uint dwDevSpecificOffset;
    uint dwPredictiveAutoTransferStates;
    uint dwTargetAddressSize;
    uint dwTargetAddressOffset;
    uint dwSendingFlowspecSize;
    uint dwSendingFlowspecOffset;
    uint dwReceivingFlowspecSize;
    uint dwReceivingFlowspecOffset;
    uint dwDeviceClassSize;
    uint dwDeviceClassOffset;
    uint dwDeviceConfigSize;
    uint dwDeviceConfigOffset;
    uint dwCallDataSize;
    uint dwCallDataOffset;
    uint dwNoAnswerTimeout;
    uint dwCallingPartyIDSize;
    uint dwCallingPartyIDOffset;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; LINECALLPARAMS サイズ: 176 バイト(x64)
dim st, 44    ; 4byte整数×44(構造体サイズ 176 / 4 切り上げ)
; dwTotalSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwBearerMode : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwMinRate : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwMaxRate : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwMediaMode : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwCallParamFlags : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwAddressMode : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwAddressID : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; DialParams : LINEDIALPARAMS (+32, 16byte)  varptr(st)+32 を基点に操作(16byte:入れ子/配列)
; dwOrigAddressSize : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwOrigAddressOffset : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; dwDisplayableAddressSize : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; dwDisplayableAddressOffset : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; dwCalledPartySize : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; dwCalledPartyOffset : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; dwCommentSize : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; dwCommentOffset : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; dwUserUserInfoSize : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; dwUserUserInfoOffset : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; dwHighLevelCompSize : DWORD (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; dwHighLevelCompOffset : DWORD (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; dwLowLevelCompSize : DWORD (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; dwLowLevelCompOffset : DWORD (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; dwDevSpecificSize : DWORD (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; dwDevSpecificOffset : DWORD (+108, 4byte)  st.27 = 値  /  値 = st.27   (lpoke/lpeek も可)
; dwPredictiveAutoTransferStates : DWORD (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; dwTargetAddressSize : DWORD (+116, 4byte)  st.29 = 値  /  値 = st.29   (lpoke/lpeek も可)
; dwTargetAddressOffset : DWORD (+120, 4byte)  st.30 = 値  /  値 = st.30   (lpoke/lpeek も可)
; dwSendingFlowspecSize : DWORD (+124, 4byte)  st.31 = 値  /  値 = st.31   (lpoke/lpeek も可)
; dwSendingFlowspecOffset : DWORD (+128, 4byte)  st.32 = 値  /  値 = st.32   (lpoke/lpeek も可)
; dwReceivingFlowspecSize : DWORD (+132, 4byte)  st.33 = 値  /  値 = st.33   (lpoke/lpeek も可)
; dwReceivingFlowspecOffset : DWORD (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; dwDeviceClassSize : DWORD (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; dwDeviceClassOffset : DWORD (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; dwDeviceConfigSize : DWORD (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; dwDeviceConfigOffset : DWORD (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; dwCallDataSize : DWORD (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; dwCallDataOffset : DWORD (+160, 4byte)  st.40 = 値  /  値 = st.40   (lpoke/lpeek も可)
; dwNoAnswerTimeout : DWORD (+164, 4byte)  st.41 = 値  /  値 = st.41   (lpoke/lpeek も可)
; dwCallingPartyIDSize : DWORD (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; dwCallingPartyIDOffset : DWORD (+172, 4byte)  st.43 = 値  /  値 = st.43   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global LINEDIALPARAMS, pack=1
    #field int dwDialPause
    #field int dwDialSpeed
    #field int dwDigitDuration
    #field int dwWaitForDialtone
#endstruct

#defstruct global LINECALLPARAMS, pack=1
    #field int dwTotalSize
    #field int dwBearerMode
    #field int dwMinRate
    #field int dwMaxRate
    #field int dwMediaMode
    #field int dwCallParamFlags
    #field int dwAddressMode
    #field int dwAddressID
    #field LINEDIALPARAMS DialParams
    #field int dwOrigAddressSize
    #field int dwOrigAddressOffset
    #field int dwDisplayableAddressSize
    #field int dwDisplayableAddressOffset
    #field int dwCalledPartySize
    #field int dwCalledPartyOffset
    #field int dwCommentSize
    #field int dwCommentOffset
    #field int dwUserUserInfoSize
    #field int dwUserUserInfoOffset
    #field int dwHighLevelCompSize
    #field int dwHighLevelCompOffset
    #field int dwLowLevelCompSize
    #field int dwLowLevelCompOffset
    #field int dwDevSpecificSize
    #field int dwDevSpecificOffset
    #field int dwPredictiveAutoTransferStates
    #field int dwTargetAddressSize
    #field int dwTargetAddressOffset
    #field int dwSendingFlowspecSize
    #field int dwSendingFlowspecOffset
    #field int dwReceivingFlowspecSize
    #field int dwReceivingFlowspecOffset
    #field int dwDeviceClassSize
    #field int dwDeviceClassOffset
    #field int dwDeviceConfigSize
    #field int dwDeviceConfigOffset
    #field int dwCallDataSize
    #field int dwCallDataOffset
    #field int dwNoAnswerTimeout
    #field int dwCallingPartyIDSize
    #field int dwCallingPartyIDOffset
#endstruct

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