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

LINECALLINFO

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

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

フィールド

フィールドサイズx64x86説明
dwTotalSizeDWORD4+0+0このデータ構造体に割り当てられた合計サイズ (バイト単位)。
dwNeededSizeDWORD4+4+4返されるすべての情報を格納するために必要な、このデータ構造体のサイズ (バイト単位)。
dwUsedSizeDWORD4+8+8このデータ構造体のうち、有用な情報が格納されている部分のサイズ (バイト単位)。
hLineDWORD4+12+12この通話が関連付けられている回線デバイスへのハンドル。
dwLineDeviceIDDWORD4+16+16この通話が関連付けられている回線デバイスのデバイス識別子。
dwAddressIDDWORD4+20+20この通話が存在する回線上のアドレスのアドレス識別子。アドレス識別子はアドレスに恒久的に関連付けられており、オペレーティング システムのアップグレードをまたいでも一定のままです。
dwBearerModeDWORD4+24+24通話の現在のベアラーモード。このメンバーは LINEBEARERMODE_ 定数 のいずれかを使用します。
dwRateDWORD4+28+28通話のデータ ストリームのレート (bps: ビット/秒)。
dwMediaModeDWORD4+32+32現在この通話で扱われている情報ストリームのメディアの種類。これは通話の所有者によって決定されるメディアの種類であり、直前の LINE_MONITORMEDIA メッセージのものと必ずしも同じではありません。このメンバーは LINE_MONITORMEDIA メッセージの影響を直接受けません。このメンバーは LINEMEDIAMODE_ 定数 を使用します。
dwAppSpecificDWORD4+36+36API の実装およびサービス プロバイダーでは解釈されません。この通話の所有者アプリケーションであれば、 lineSetAppSpecific 関数で設定できます。
dwCallIDDWORD4+40+40テレフォニー環境によっては、スイッチまたはサービス プロバイダーが各通話に一意の識別子を割り当てられます。これにより、転送や転送先変更などのイベントをまたいで通話を追跡できます。これらの通話 ID の値域とスコープはサービス プロバイダーが定義します。dwCallID メンバーは、この一意の識別子をアプリケーションから利用できるようにします。
dwRelatedCallIDDWORD4+44+44通話 ID を使用するテレフォニー環境では、ある通話を別の通話に関連付ける必要が生じることがよくあります。dwRelatedCallID メンバーは、この目的でサービス プロバイダーが使用できます。
dwCallParamFlagsDWORD4+48+48通話が発信である場合の、通話に関するパラメーターの集合。これらは lineMakeCall で指定される通話パラメーターと同じであり、 LINECALLPARAMFLAGS_ 定数 の 1 つ以上です。
dwCallStatesDWORD4+52+52この通話でアプリケーションが通知を受け取れる状態を示す、1 つ以上の LINECALLSTATE_ 定数。dwCallStates メンバーは LINECALLINFO において一定であり、通話の状態によって変化しません。
dwMonitorDigitModesDWORD4+56+56各種のダイヤル桁モード。このメンバーは、現在監視が有効になっている LINEDIGITMODE_ 定数 の 1 つ以上です。
dwMonitorMediaModesDWORD4+60+60現在監視が有効になっている各種のメディアの種類。このメンバーは LINEMEDIAMODE_ 定数 の 1 つ以上です。
DialParamsLINEDIALPARAMS16+64+64この通話で現在有効なダイヤル パラメーター。型は LINEDIALPARAMS です。これらのパラメーターが lineMakeCall または lineSetCallParams で設定されていない限り、その値は LINEDEVCAPS 構造体で使用される既定値と同じです。
dwOriginDWORD4+80+80通話の発信元を示します。このメンバーは LINECALLORIGIN_ 定数 のいずれかになります。
dwReasonDWORD4+84+84通話が発生した理由。このメンバーは LINECALLREASON_ 定数 のいずれかになります。
dwCompletionIDDWORD4+88+88着信通話が完了要求の終了によって発生した場合の、その完了識別子。この識別子は、dwReasonLINECALLREASON_CALLCOMPLETION の場合にのみ意味を持ちます。
dwNumOwnersDWORD4+92+92この通話に対して所有者特権を持つ、異なる通話ハンドルを保持するアプリケーション モジュールの数。
dwNumMonitorsDWORD4+96+96この通話に対して監視特権を持つ、異なる通話ハンドルを保持するアプリケーション モジュールの数。
dwCountryCodeDWORD4+100+100相手先の国または地域コード。不明な場合は 0 です。
dwTrunkDWORD4+104+104通話がルーティングされるトランクの番号。このメンバーは着信と発信の両方の通話で使用されます。不明な場合、dwTrunk メンバーは 0xFFFFFFFF に設定します。
dwCallerIDFlagsDWORD4+108+108発信者 (発呼側) の相手先識別子情報の有効性と内容を決定します。このメンバーは LINECALLPARTYID_ 定数 のいずれかを使用します。
dwCallerIDSizeDWORD4+112+112発信者 ID 番号のサイズ (バイト単位)。
dwCallerIDOffsetDWORD4+116+116この構造体の先頭から、発信者側 ID 番号の情報を格納する可変長フィールドまでのオフセット。このフィールドのサイズは dwCallerIDSize で指定されます。
dwCallerIDNameSizeDWORD4+120+120null 終端文字を含む発信者 ID 名のサイズ (バイト単位)。
dwCallerIDNameOffsetDWORD4+124+124この構造体の先頭から、発信者側 ID 名の情報を格納する可変長フィールドまでのオフセット。このフィールドのサイズは dwCallerIDNameSize で指定されます。
dwCalledIDFlagsDWORD4+128+128着信側 ID 情報の有効性と内容を決定します。着信側は、最初にアドレス指定された相手に対応します。このメンバーは LINECALLPARTYID_ 定数 のいずれかを使用します。
dwCalledIDSizeDWORD4+132+132着信側 ID 番号のサイズ (バイト単位)。
dwCalledIDOffsetDWORD4+136+136この構造体の先頭から、着信側 ID 番号の情報を格納する可変長フィールドまでのオフセット。このフィールドのサイズは dwCalledIDSize で指定されます。
dwCalledIDNameSizeDWORD4+140+140null 終端文字を含む着信側 ID 名のサイズ (バイト単位)。
dwCalledIDNameOffsetDWORD4+144+144この構造体の先頭から、着信側 ID 名の情報を格納する可変長フィールドまでのオフセット。このフィールドのサイズは dwCalledIDNameSize で指定されます。
dwConnectedIDFlagsDWORD4+148+148接続先の相手先 ID 情報の有効性と内容を決定します。接続先の相手先とは、実際に接続された相手です。通話が転送された場合、これは着信側 ID と異なることがあります。このメンバーは LINECALLPARTYID_ 定数 のいずれかを使用します。
dwConnectedIDSizeDWORD4+152+152接続先の相手先 ID 番号のサイズ (バイト単位)。
dwConnectedIDOffsetDWORD4+156+156この構造体の先頭から、接続先の相手先 ID 番号の情報を格納する可変長フィールドまでのオフセット。このフィールドのサイズは dwConnectedIDSize で指定されます。
dwConnectedIDNameSizeDWORD4+160+160null 終端文字を含む接続先の相手先 ID 名のサイズ (バイト単位)。
dwConnectedIDNameOffsetDWORD4+164+164この構造体の先頭から、接続先の相手先 ID 名の情報を格納する可変長フィールドまでのオフセット。このフィールドのサイズは dwConnectedIDNameSize で指定されます。
dwRedirectionIDFlagsDWORD4+168+168リダイレクト先の相手先識別子情報の有効性と内容を決定します。リダイレクト先の相手先は、セッションのリダイレクト先となったアドレスを示します。このメンバーは LINECALLPARTYID_ 定数 のいずれかを使用します。
dwRedirectionIDSizeDWORD4+172+172リダイレクト先の相手先 ID 番号のサイズ (バイト単位)。
dwRedirectionIDOffsetDWORD4+176+176この構造体の先頭から、リダイレクト先の相手先 ID 番号の情報を格納する可変長フィールドまでのオフセット。このフィールドのサイズは dwRedirectionIDSize で指定されます。
dwRedirectionIDNameSizeDWORD4+180+180リダイレクト先の相手先 ID 名のサイズ (バイト単位)。
dwRedirectionIDNameOffsetDWORD4+184+184この構造体の先頭から、リダイレクト先の相手先 ID 名の情報を格納する可変長フィールドまでのオフセット。このフィールドのサイズは dwRedirectionIDNameSize で指定されます。
dwRedirectingIDFlagsDWORD4+188+188リダイレクト元の相手先識別子情報の有効性と内容を決定します。リダイレクト元の相手先は、セッションをリダイレクトしたアドレスを示します。このメンバーは LINECALLPARTYID_ 定数 のいずれかを使用します。
dwRedirectingIDSizeDWORD4+192+192リダイレクト元の相手先 ID 番号のサイズ (バイト単位)。
dwRedirectingIDOffsetDWORD4+196+196この構造体の先頭から、リダイレクト元の相手先 ID 番号の情報を格納する可変長フィールドまでのオフセット。このフィールドのサイズは dwRedirectingIDSize で指定されます。
dwRedirectingIDNameSizeDWORD4+200+200null 終端文字を含むリダイレクト元の相手先 ID 名のサイズ (バイト単位)。
dwRedirectingIDNameOffsetDWORD4+204+204この構造体の先頭から、リダイレクト元の相手先 ID 名の情報を格納する可変長フィールドまでのオフセット。このフィールドのサイズは dwRedirectingIDNameSize で指定されます。
dwAppNameSizeDWORD4+208+208null 終端文字を含むアプリケーション名フィールドのサイズ (バイト単位)。
dwAppNameOffsetDWORD4+212+212この構造体の先頭から、通話を最初に発信、受け入れ、または応答したアプリケーションのわかりやすい名前を保持する可変長フィールドまでのオフセット。これは、アプリケーションが lineInitializeEx で指定できる名前です。アプリケーションがそのような名前を指定しない場合は、代わりにアプリケーションのモジュール ファイル名が使用されます。このフィールドのサイズは dwAppNameSize で指定されます。
dwDisplayableAddressSizeDWORD4+216+216null 終端文字を含む表示可能なアドレス文字列のサイズ (バイト単位)。
dwDisplayableAddressOffsetDWORD4+220+220表示可能な文字列はログ記録の目的で使用されます。この情報は、通話を開始する関数の場合は LINECALLPARAMS から取得されます。 lineTranslateAddress 関数は、このフィールドに格納するのに適した情報を、 LINETRANSLATEOUTPUT 構造体の dwDisplayableAddressSize メンバーおよび dwDisplayableAddressOffset メンバーで返します。
dwCalledPartySizeDWORD4+224+224着信側の説明フィールドのサイズ (バイト単位)。
dwCalledPartyOffsetDWORD4+228+228この構造体の先頭から、着信側のわかりやすい説明を指定する可変長フィールドまでのオフセット。この情報は lineMakeCall で指定でき、また新しい通話を確立する際に lpCallParams パラメーターで任意に指定できます。通話のログ記録の目的で役立ちます。このフィールドのサイズは dwCalledPartySize で指定されます。
dwCommentSizeDWORD4+232+232コメント フィールドのサイズ (バイト単位)。
dwCommentOffsetDWORD4+236+236この構造体の先頭から、 lineMakeCall を使用して通話を発信したアプリケーションが提供する、通話に関するコメントを保持する可変長フィールドまでのオフセット。この情報は、新しい通話を確立する際に lpCallParams パラメーターで任意に指定できます。このフィールドのサイズは dwCommentSize で指定されます。
dwDisplaySizeDWORD4+240+240生の表示情報のサイズ (バイト単位)。
dwDisplayOffsetDWORD4+244+244この構造体の先頭から、生の表示情報を保持する可変長フィールドまでのオフセット。テレフォニー環境によっては、サービス プロバイダーがこのメンバーの組から機能的な情報を抽出し、そのテレフォニー構成に最も適した形式で整形して表示することがあります。このフィールドのサイズは dwDisplaySize で指定されます。
dwUserUserInfoSizeDWORD4+248+248ユーザー間情報のサイズ (バイト単位)。ユーザー間情報が文字列へのポインターである場合、サイズには null 終端文字を含める必要があります。
dwUserUserInfoOffsetDWORD4+252+252この構造体の先頭から、ユーザー間情報を保持する可変長フィールドまでのオフセット。ユーザー間情報のプロトコル識別子フィールドは、使用される場合、dwUserUserInfoOffset が指すデータの最初のバイトとして現れ、dwUserUserInfoSize に含めて計上されます。
dwHighLevelCompSizeDWORD4+256+256高位互換性情報のサイズ (バイト単位)。
dwHighLevelCompOffsetDWORD4+260+260この構造体の先頭から、高位互換性情報を保持する可変長フィールドまでのオフセット。この情報の形式は他の標準 (ISDN Q.931) で規定されています。このフィールドのサイズは dwHighLevelCompSize で指定されます。
dwLowLevelCompSizeDWORD4+264+264低位互換性情報のサイズ (バイト単位)。
dwLowLevelCompOffsetDWORD4+268+268この構造体の先頭から、低位互換性情報を保持する可変長フィールドまでのオフセット。この情報の形式は他の標準 (ISDN Q.931) で規定されています。このフィールドのサイズは dwLowLevelCompSize で指定されます。
dwChargingInfoSizeDWORD4+272+272課金情報のサイズ (バイト単位)。
dwChargingInfoOffsetDWORD4+276+276この構造体の先頭から、課金情報を保持する可変長フィールドまでのオフセット。この情報の形式は他の標準 (ISDN Q.931) で規定されています。このフィールドのサイズは dwChargingInfoSize で指定されます。
dwTerminalModesSizeDWORD4+280+280現在の端末モード配列のサイズ (バイト単位)。
dwTerminalModesOffsetDWORD4+284+284この構造体の先頭から、DWORD サイズのエントリを持つ配列を格納する可変長のデバイス フィールドまでのオフセット。配列のエントリは、0 から dwNumTerminals より 1 小さい値までの範囲の端末識別子でインデックス付けされます。配列の各エントリは、この通話のメディア ストリームに対して lineSetTerminal 関数で設定された、対応する端末の現在の端末モードを LINETERMMODE_ 定数 のいずれかで指定します。配列のサイズは dwTerminalModesSize で指定されます。
dwDevSpecificSizeDWORD4+288+288デバイス固有フィールドのサイズ (バイト単位)。
dwDevSpecificOffsetDWORD4+292+292この構造体の先頭から、デバイス固有の情報を保持する可変長フィールドまでのオフセット。このフィールドのサイズは dwDevSpecificSize で指定されます。
dwCallTreatmentDWORD4+296+296現在この通話に適用されている、または通話が次の該当する状態になったときに適用される通話処理 (call treatment)。通話処理がサポートされていない場合は 0 になることがあります。
dwCallDataSizeDWORD4+300+300アプリケーションが設定可能な通話データのサイズ (バイト単位)。
dwCallDataOffsetDWORD4+304+304この構造体の先頭から、アプリケーションが設定可能な通話データまでのオフセット。このフィールドのサイズは dwCallDataSize で指定されます。
dwSendingFlowspecSizeDWORD4+308+308サービス品質 (QoS) 情報のサイズ (バイト単位)。
dwSendingFlowspecOffsetDWORD4+312+312この構造体の先頭から、 FLOWSPEC 構造体と、それに続く WinSock プロバイダー固有のデータまでのオフセット。これは QOS 構造体の SendingFlowspec に格納されるものと同等です。この通話の送信方向で現在有効なサービス品質を指定します。FLOWSPEC 構造体に続くプロバイダー固有の部分には、他のメモリ ブロックへのポインターを含めてはなりません。TAPI は、プライベート ポインターが指すデータをマーシャリングし、プロセス間通信でアプリケーションに伝達する方法を知らないためです。このフィールドのサイズは dwSendingFlowspecSize で指定されます。
dwReceivingFlowspecSizeDWORD4+316+316サービス品質 (QoS) 情報のサイズ (バイト単位)。
dwReceivingFlowspecOffsetDWORD4+320+320この構造体の先頭から、FLOWSPEC 構造体と、それに続く WinSock プロバイダー固有のデータまでのオフセット。これは QOS 構造体の ReceivingFlowspec に格納されるものと同等です。この通話の受信方向で現在有効なサービス品質を指定します。FLOWSPEC 構造体に続くプロバイダー固有の部分には、他のメモリ ブロックへのポインターを含めてはなりません。TAPI は、プライベート ポインターが指すデータをマーシャリングし、プロセス間通信でアプリケーションに伝達する方法を知らないためです。このフィールドのサイズは dwReceivingFlowspecSize で指定されます。

公式ドキュメント

LINECALLINFO 構造体は、通話に関する情報を格納します。この情報は、通話中は比較的固定されたままです。複数の関数が LINECALLINFO を使用します。この構造体は lineGetCallInfo 関数および TSPI_lineGetCallInfo 関数によって返されます。構造体の一部が変化した場合は、どの情報項目が変化したかを示す LINE_CALLINFO メッセージがアプリケーションに送信されます。

通話の進行状況など、動的に変化する通話の情報は、 lineGetCallStatus 関数の呼び出しによって返される LINECALLSTATUS 構造体で取得できます。

解説(Remarks)

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

LINECALLINFO データ構造体は、通話に関する比較的固定された情報を格納します。この構造体は lineGetCallInfo によって返されます。このデータ構造体内の情報項目が変化すると、LINE_CALLINFO メッセージがアプリケーションに送信されます。このメッセージのパラメーターの 1 つは、変化した情報項目またはフィールドです。

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

メモ dwCallID フィールドおよび同様の他の 5 つのフィールド (dwCallerIDFlagdwCallerIDSizedwCallerIDOffsetdwCallerIDNameSizedwCallerIDNameOffset) の内容の指定には、TAPI の正規番号形式が推奨されます。たとえば、スイッチから受信した ICLID "4258828080" は、 LINECALLINFO 構造体に格納する前に "+1 (425) 8828080" に変換してください。この標準化された形式により、データベースの検索やアプリケーションで実装されるコールバック関数が容易になります。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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)

// LINECALLINFO  (x64 324 / x86 324 バイト)
#pragma pack(push, 1)
typedef struct LINECALLINFO {
    DWORD dwTotalSize;
    DWORD dwNeededSize;
    DWORD dwUsedSize;
    DWORD hLine;
    DWORD dwLineDeviceID;
    DWORD dwAddressID;
    DWORD dwBearerMode;
    DWORD dwRate;
    DWORD dwMediaMode;
    DWORD dwAppSpecific;
    DWORD dwCallID;
    DWORD dwRelatedCallID;
    DWORD dwCallParamFlags;
    DWORD dwCallStates;
    DWORD dwMonitorDigitModes;
    DWORD dwMonitorMediaModes;
    LINEDIALPARAMS DialParams;
    DWORD dwOrigin;
    DWORD dwReason;
    DWORD dwCompletionID;
    DWORD dwNumOwners;
    DWORD dwNumMonitors;
    DWORD dwCountryCode;
    DWORD dwTrunk;
    DWORD dwCallerIDFlags;
    DWORD dwCallerIDSize;
    DWORD dwCallerIDOffset;
    DWORD dwCallerIDNameSize;
    DWORD dwCallerIDNameOffset;
    DWORD dwCalledIDFlags;
    DWORD dwCalledIDSize;
    DWORD dwCalledIDOffset;
    DWORD dwCalledIDNameSize;
    DWORD dwCalledIDNameOffset;
    DWORD dwConnectedIDFlags;
    DWORD dwConnectedIDSize;
    DWORD dwConnectedIDOffset;
    DWORD dwConnectedIDNameSize;
    DWORD dwConnectedIDNameOffset;
    DWORD dwRedirectionIDFlags;
    DWORD dwRedirectionIDSize;
    DWORD dwRedirectionIDOffset;
    DWORD dwRedirectionIDNameSize;
    DWORD dwRedirectionIDNameOffset;
    DWORD dwRedirectingIDFlags;
    DWORD dwRedirectingIDSize;
    DWORD dwRedirectingIDOffset;
    DWORD dwRedirectingIDNameSize;
    DWORD dwRedirectingIDNameOffset;
    DWORD dwAppNameSize;
    DWORD dwAppNameOffset;
    DWORD dwDisplayableAddressSize;
    DWORD dwDisplayableAddressOffset;
    DWORD dwCalledPartySize;
    DWORD dwCalledPartyOffset;
    DWORD dwCommentSize;
    DWORD dwCommentOffset;
    DWORD dwDisplaySize;
    DWORD dwDisplayOffset;
    DWORD dwUserUserInfoSize;
    DWORD dwUserUserInfoOffset;
    DWORD dwHighLevelCompSize;
    DWORD dwHighLevelCompOffset;
    DWORD dwLowLevelCompSize;
    DWORD dwLowLevelCompOffset;
    DWORD dwChargingInfoSize;
    DWORD dwChargingInfoOffset;
    DWORD dwTerminalModesSize;
    DWORD dwTerminalModesOffset;
    DWORD dwDevSpecificSize;
    DWORD dwDevSpecificOffset;
    DWORD dwCallTreatment;
    DWORD dwCallDataSize;
    DWORD dwCallDataOffset;
    DWORD dwSendingFlowspecSize;
    DWORD dwSendingFlowspecOffset;
    DWORD dwReceivingFlowspecSize;
    DWORD dwReceivingFlowspecOffset;
} LINECALLINFO;
#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 LINECALLINFO
{
    public uint dwTotalSize;
    public uint dwNeededSize;
    public uint dwUsedSize;
    public uint hLine;
    public uint dwLineDeviceID;
    public uint dwAddressID;
    public uint dwBearerMode;
    public uint dwRate;
    public uint dwMediaMode;
    public uint dwAppSpecific;
    public uint dwCallID;
    public uint dwRelatedCallID;
    public uint dwCallParamFlags;
    public uint dwCallStates;
    public uint dwMonitorDigitModes;
    public uint dwMonitorMediaModes;
    public LINEDIALPARAMS DialParams;
    public uint dwOrigin;
    public uint dwReason;
    public uint dwCompletionID;
    public uint dwNumOwners;
    public uint dwNumMonitors;
    public uint dwCountryCode;
    public uint dwTrunk;
    public uint dwCallerIDFlags;
    public uint dwCallerIDSize;
    public uint dwCallerIDOffset;
    public uint dwCallerIDNameSize;
    public uint dwCallerIDNameOffset;
    public uint dwCalledIDFlags;
    public uint dwCalledIDSize;
    public uint dwCalledIDOffset;
    public uint dwCalledIDNameSize;
    public uint dwCalledIDNameOffset;
    public uint dwConnectedIDFlags;
    public uint dwConnectedIDSize;
    public uint dwConnectedIDOffset;
    public uint dwConnectedIDNameSize;
    public uint dwConnectedIDNameOffset;
    public uint dwRedirectionIDFlags;
    public uint dwRedirectionIDSize;
    public uint dwRedirectionIDOffset;
    public uint dwRedirectionIDNameSize;
    public uint dwRedirectionIDNameOffset;
    public uint dwRedirectingIDFlags;
    public uint dwRedirectingIDSize;
    public uint dwRedirectingIDOffset;
    public uint dwRedirectingIDNameSize;
    public uint dwRedirectingIDNameOffset;
    public uint dwAppNameSize;
    public uint dwAppNameOffset;
    public uint dwDisplayableAddressSize;
    public uint dwDisplayableAddressOffset;
    public uint dwCalledPartySize;
    public uint dwCalledPartyOffset;
    public uint dwCommentSize;
    public uint dwCommentOffset;
    public uint dwDisplaySize;
    public uint dwDisplayOffset;
    public uint dwUserUserInfoSize;
    public uint dwUserUserInfoOffset;
    public uint dwHighLevelCompSize;
    public uint dwHighLevelCompOffset;
    public uint dwLowLevelCompSize;
    public uint dwLowLevelCompOffset;
    public uint dwChargingInfoSize;
    public uint dwChargingInfoOffset;
    public uint dwTerminalModesSize;
    public uint dwTerminalModesOffset;
    public uint dwDevSpecificSize;
    public uint dwDevSpecificOffset;
    public uint dwCallTreatment;
    public uint dwCallDataSize;
    public uint dwCallDataOffset;
    public uint dwSendingFlowspecSize;
    public uint dwSendingFlowspecOffset;
    public uint dwReceivingFlowspecSize;
    public uint dwReceivingFlowspecOffset;
}
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 LINECALLINFO
    Public dwTotalSize As UInteger
    Public dwNeededSize As UInteger
    Public dwUsedSize As UInteger
    Public hLine As UInteger
    Public dwLineDeviceID As UInteger
    Public dwAddressID As UInteger
    Public dwBearerMode As UInteger
    Public dwRate As UInteger
    Public dwMediaMode As UInteger
    Public dwAppSpecific As UInteger
    Public dwCallID As UInteger
    Public dwRelatedCallID As UInteger
    Public dwCallParamFlags As UInteger
    Public dwCallStates As UInteger
    Public dwMonitorDigitModes As UInteger
    Public dwMonitorMediaModes As UInteger
    Public DialParams As LINEDIALPARAMS
    Public dwOrigin As UInteger
    Public dwReason As UInteger
    Public dwCompletionID As UInteger
    Public dwNumOwners As UInteger
    Public dwNumMonitors As UInteger
    Public dwCountryCode As UInteger
    Public dwTrunk As UInteger
    Public dwCallerIDFlags As UInteger
    Public dwCallerIDSize As UInteger
    Public dwCallerIDOffset As UInteger
    Public dwCallerIDNameSize As UInteger
    Public dwCallerIDNameOffset As UInteger
    Public dwCalledIDFlags As UInteger
    Public dwCalledIDSize As UInteger
    Public dwCalledIDOffset As UInteger
    Public dwCalledIDNameSize As UInteger
    Public dwCalledIDNameOffset As UInteger
    Public dwConnectedIDFlags As UInteger
    Public dwConnectedIDSize As UInteger
    Public dwConnectedIDOffset As UInteger
    Public dwConnectedIDNameSize As UInteger
    Public dwConnectedIDNameOffset As UInteger
    Public dwRedirectionIDFlags As UInteger
    Public dwRedirectionIDSize As UInteger
    Public dwRedirectionIDOffset As UInteger
    Public dwRedirectionIDNameSize As UInteger
    Public dwRedirectionIDNameOffset As UInteger
    Public dwRedirectingIDFlags As UInteger
    Public dwRedirectingIDSize As UInteger
    Public dwRedirectingIDOffset As UInteger
    Public dwRedirectingIDNameSize As UInteger
    Public dwRedirectingIDNameOffset As UInteger
    Public dwAppNameSize As UInteger
    Public dwAppNameOffset 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 dwDisplaySize As UInteger
    Public dwDisplayOffset 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 dwChargingInfoSize As UInteger
    Public dwChargingInfoOffset As UInteger
    Public dwTerminalModesSize As UInteger
    Public dwTerminalModesOffset As UInteger
    Public dwDevSpecificSize As UInteger
    Public dwDevSpecificOffset As UInteger
    Public dwCallTreatment As UInteger
    Public dwCallDataSize As UInteger
    Public dwCallDataOffset As UInteger
    Public dwSendingFlowspecSize As UInteger
    Public dwSendingFlowspecOffset As UInteger
    Public dwReceivingFlowspecSize As UInteger
    Public dwReceivingFlowspecOffset 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 LINECALLINFO(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("dwTotalSize", wintypes.DWORD),
        ("dwNeededSize", wintypes.DWORD),
        ("dwUsedSize", wintypes.DWORD),
        ("hLine", wintypes.DWORD),
        ("dwLineDeviceID", wintypes.DWORD),
        ("dwAddressID", wintypes.DWORD),
        ("dwBearerMode", wintypes.DWORD),
        ("dwRate", wintypes.DWORD),
        ("dwMediaMode", wintypes.DWORD),
        ("dwAppSpecific", wintypes.DWORD),
        ("dwCallID", wintypes.DWORD),
        ("dwRelatedCallID", wintypes.DWORD),
        ("dwCallParamFlags", wintypes.DWORD),
        ("dwCallStates", wintypes.DWORD),
        ("dwMonitorDigitModes", wintypes.DWORD),
        ("dwMonitorMediaModes", wintypes.DWORD),
        ("DialParams", LINEDIALPARAMS),
        ("dwOrigin", wintypes.DWORD),
        ("dwReason", wintypes.DWORD),
        ("dwCompletionID", wintypes.DWORD),
        ("dwNumOwners", wintypes.DWORD),
        ("dwNumMonitors", wintypes.DWORD),
        ("dwCountryCode", wintypes.DWORD),
        ("dwTrunk", wintypes.DWORD),
        ("dwCallerIDFlags", wintypes.DWORD),
        ("dwCallerIDSize", wintypes.DWORD),
        ("dwCallerIDOffset", wintypes.DWORD),
        ("dwCallerIDNameSize", wintypes.DWORD),
        ("dwCallerIDNameOffset", wintypes.DWORD),
        ("dwCalledIDFlags", wintypes.DWORD),
        ("dwCalledIDSize", wintypes.DWORD),
        ("dwCalledIDOffset", wintypes.DWORD),
        ("dwCalledIDNameSize", wintypes.DWORD),
        ("dwCalledIDNameOffset", wintypes.DWORD),
        ("dwConnectedIDFlags", wintypes.DWORD),
        ("dwConnectedIDSize", wintypes.DWORD),
        ("dwConnectedIDOffset", wintypes.DWORD),
        ("dwConnectedIDNameSize", wintypes.DWORD),
        ("dwConnectedIDNameOffset", wintypes.DWORD),
        ("dwRedirectionIDFlags", wintypes.DWORD),
        ("dwRedirectionIDSize", wintypes.DWORD),
        ("dwRedirectionIDOffset", wintypes.DWORD),
        ("dwRedirectionIDNameSize", wintypes.DWORD),
        ("dwRedirectionIDNameOffset", wintypes.DWORD),
        ("dwRedirectingIDFlags", wintypes.DWORD),
        ("dwRedirectingIDSize", wintypes.DWORD),
        ("dwRedirectingIDOffset", wintypes.DWORD),
        ("dwRedirectingIDNameSize", wintypes.DWORD),
        ("dwRedirectingIDNameOffset", wintypes.DWORD),
        ("dwAppNameSize", wintypes.DWORD),
        ("dwAppNameOffset", wintypes.DWORD),
        ("dwDisplayableAddressSize", wintypes.DWORD),
        ("dwDisplayableAddressOffset", wintypes.DWORD),
        ("dwCalledPartySize", wintypes.DWORD),
        ("dwCalledPartyOffset", wintypes.DWORD),
        ("dwCommentSize", wintypes.DWORD),
        ("dwCommentOffset", wintypes.DWORD),
        ("dwDisplaySize", wintypes.DWORD),
        ("dwDisplayOffset", wintypes.DWORD),
        ("dwUserUserInfoSize", wintypes.DWORD),
        ("dwUserUserInfoOffset", wintypes.DWORD),
        ("dwHighLevelCompSize", wintypes.DWORD),
        ("dwHighLevelCompOffset", wintypes.DWORD),
        ("dwLowLevelCompSize", wintypes.DWORD),
        ("dwLowLevelCompOffset", wintypes.DWORD),
        ("dwChargingInfoSize", wintypes.DWORD),
        ("dwChargingInfoOffset", wintypes.DWORD),
        ("dwTerminalModesSize", wintypes.DWORD),
        ("dwTerminalModesOffset", wintypes.DWORD),
        ("dwDevSpecificSize", wintypes.DWORD),
        ("dwDevSpecificOffset", wintypes.DWORD),
        ("dwCallTreatment", wintypes.DWORD),
        ("dwCallDataSize", wintypes.DWORD),
        ("dwCallDataOffset", wintypes.DWORD),
        ("dwSendingFlowspecSize", wintypes.DWORD),
        ("dwSendingFlowspecOffset", wintypes.DWORD),
        ("dwReceivingFlowspecSize", wintypes.DWORD),
        ("dwReceivingFlowspecOffset", 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 LINECALLINFO {
    pub dwTotalSize: u32,
    pub dwNeededSize: u32,
    pub dwUsedSize: u32,
    pub hLine: u32,
    pub dwLineDeviceID: u32,
    pub dwAddressID: u32,
    pub dwBearerMode: u32,
    pub dwRate: u32,
    pub dwMediaMode: u32,
    pub dwAppSpecific: u32,
    pub dwCallID: u32,
    pub dwRelatedCallID: u32,
    pub dwCallParamFlags: u32,
    pub dwCallStates: u32,
    pub dwMonitorDigitModes: u32,
    pub dwMonitorMediaModes: u32,
    pub DialParams: LINEDIALPARAMS,
    pub dwOrigin: u32,
    pub dwReason: u32,
    pub dwCompletionID: u32,
    pub dwNumOwners: u32,
    pub dwNumMonitors: u32,
    pub dwCountryCode: u32,
    pub dwTrunk: u32,
    pub dwCallerIDFlags: u32,
    pub dwCallerIDSize: u32,
    pub dwCallerIDOffset: u32,
    pub dwCallerIDNameSize: u32,
    pub dwCallerIDNameOffset: u32,
    pub dwCalledIDFlags: u32,
    pub dwCalledIDSize: u32,
    pub dwCalledIDOffset: u32,
    pub dwCalledIDNameSize: u32,
    pub dwCalledIDNameOffset: u32,
    pub dwConnectedIDFlags: u32,
    pub dwConnectedIDSize: u32,
    pub dwConnectedIDOffset: u32,
    pub dwConnectedIDNameSize: u32,
    pub dwConnectedIDNameOffset: u32,
    pub dwRedirectionIDFlags: u32,
    pub dwRedirectionIDSize: u32,
    pub dwRedirectionIDOffset: u32,
    pub dwRedirectionIDNameSize: u32,
    pub dwRedirectionIDNameOffset: u32,
    pub dwRedirectingIDFlags: u32,
    pub dwRedirectingIDSize: u32,
    pub dwRedirectingIDOffset: u32,
    pub dwRedirectingIDNameSize: u32,
    pub dwRedirectingIDNameOffset: u32,
    pub dwAppNameSize: u32,
    pub dwAppNameOffset: u32,
    pub dwDisplayableAddressSize: u32,
    pub dwDisplayableAddressOffset: u32,
    pub dwCalledPartySize: u32,
    pub dwCalledPartyOffset: u32,
    pub dwCommentSize: u32,
    pub dwCommentOffset: u32,
    pub dwDisplaySize: u32,
    pub dwDisplayOffset: u32,
    pub dwUserUserInfoSize: u32,
    pub dwUserUserInfoOffset: u32,
    pub dwHighLevelCompSize: u32,
    pub dwHighLevelCompOffset: u32,
    pub dwLowLevelCompSize: u32,
    pub dwLowLevelCompOffset: u32,
    pub dwChargingInfoSize: u32,
    pub dwChargingInfoOffset: u32,
    pub dwTerminalModesSize: u32,
    pub dwTerminalModesOffset: u32,
    pub dwDevSpecificSize: u32,
    pub dwDevSpecificOffset: u32,
    pub dwCallTreatment: u32,
    pub dwCallDataSize: u32,
    pub dwCallDataOffset: u32,
    pub dwSendingFlowspecSize: u32,
    pub dwSendingFlowspecOffset: u32,
    pub dwReceivingFlowspecSize: u32,
    pub dwReceivingFlowspecOffset: u32,
}
import "golang.org/x/sys/windows"

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

type LINECALLINFO struct {
	dwTotalSize uint32
	dwNeededSize uint32
	dwUsedSize uint32
	hLine uint32
	dwLineDeviceID uint32
	dwAddressID uint32
	dwBearerMode uint32
	dwRate uint32
	dwMediaMode uint32
	dwAppSpecific uint32
	dwCallID uint32
	dwRelatedCallID uint32
	dwCallParamFlags uint32
	dwCallStates uint32
	dwMonitorDigitModes uint32
	dwMonitorMediaModes uint32
	DialParams LINEDIALPARAMS
	dwOrigin uint32
	dwReason uint32
	dwCompletionID uint32
	dwNumOwners uint32
	dwNumMonitors uint32
	dwCountryCode uint32
	dwTrunk uint32
	dwCallerIDFlags uint32
	dwCallerIDSize uint32
	dwCallerIDOffset uint32
	dwCallerIDNameSize uint32
	dwCallerIDNameOffset uint32
	dwCalledIDFlags uint32
	dwCalledIDSize uint32
	dwCalledIDOffset uint32
	dwCalledIDNameSize uint32
	dwCalledIDNameOffset uint32
	dwConnectedIDFlags uint32
	dwConnectedIDSize uint32
	dwConnectedIDOffset uint32
	dwConnectedIDNameSize uint32
	dwConnectedIDNameOffset uint32
	dwRedirectionIDFlags uint32
	dwRedirectionIDSize uint32
	dwRedirectionIDOffset uint32
	dwRedirectionIDNameSize uint32
	dwRedirectionIDNameOffset uint32
	dwRedirectingIDFlags uint32
	dwRedirectingIDSize uint32
	dwRedirectingIDOffset uint32
	dwRedirectingIDNameSize uint32
	dwRedirectingIDNameOffset uint32
	dwAppNameSize uint32
	dwAppNameOffset uint32
	dwDisplayableAddressSize uint32
	dwDisplayableAddressOffset uint32
	dwCalledPartySize uint32
	dwCalledPartyOffset uint32
	dwCommentSize uint32
	dwCommentOffset uint32
	dwDisplaySize uint32
	dwDisplayOffset uint32
	dwUserUserInfoSize uint32
	dwUserUserInfoOffset uint32
	dwHighLevelCompSize uint32
	dwHighLevelCompOffset uint32
	dwLowLevelCompSize uint32
	dwLowLevelCompOffset uint32
	dwChargingInfoSize uint32
	dwChargingInfoOffset uint32
	dwTerminalModesSize uint32
	dwTerminalModesOffset uint32
	dwDevSpecificSize uint32
	dwDevSpecificOffset uint32
	dwCallTreatment uint32
	dwCallDataSize uint32
	dwCallDataOffset uint32
	dwSendingFlowspecSize uint32
	dwSendingFlowspecOffset uint32
	dwReceivingFlowspecSize uint32
	dwReceivingFlowspecOffset uint32
}
type
  LINEDIALPARAMS = packed record
    dwDialPause: DWORD;
    dwDialSpeed: DWORD;
    dwDigitDuration: DWORD;
    dwWaitForDialtone: DWORD;
  end;

  LINECALLINFO = packed record
    dwTotalSize: DWORD;
    dwNeededSize: DWORD;
    dwUsedSize: DWORD;
    hLine: DWORD;
    dwLineDeviceID: DWORD;
    dwAddressID: DWORD;
    dwBearerMode: DWORD;
    dwRate: DWORD;
    dwMediaMode: DWORD;
    dwAppSpecific: DWORD;
    dwCallID: DWORD;
    dwRelatedCallID: DWORD;
    dwCallParamFlags: DWORD;
    dwCallStates: DWORD;
    dwMonitorDigitModes: DWORD;
    dwMonitorMediaModes: DWORD;
    DialParams: LINEDIALPARAMS;
    dwOrigin: DWORD;
    dwReason: DWORD;
    dwCompletionID: DWORD;
    dwNumOwners: DWORD;
    dwNumMonitors: DWORD;
    dwCountryCode: DWORD;
    dwTrunk: DWORD;
    dwCallerIDFlags: DWORD;
    dwCallerIDSize: DWORD;
    dwCallerIDOffset: DWORD;
    dwCallerIDNameSize: DWORD;
    dwCallerIDNameOffset: DWORD;
    dwCalledIDFlags: DWORD;
    dwCalledIDSize: DWORD;
    dwCalledIDOffset: DWORD;
    dwCalledIDNameSize: DWORD;
    dwCalledIDNameOffset: DWORD;
    dwConnectedIDFlags: DWORD;
    dwConnectedIDSize: DWORD;
    dwConnectedIDOffset: DWORD;
    dwConnectedIDNameSize: DWORD;
    dwConnectedIDNameOffset: DWORD;
    dwRedirectionIDFlags: DWORD;
    dwRedirectionIDSize: DWORD;
    dwRedirectionIDOffset: DWORD;
    dwRedirectionIDNameSize: DWORD;
    dwRedirectionIDNameOffset: DWORD;
    dwRedirectingIDFlags: DWORD;
    dwRedirectingIDSize: DWORD;
    dwRedirectingIDOffset: DWORD;
    dwRedirectingIDNameSize: DWORD;
    dwRedirectingIDNameOffset: DWORD;
    dwAppNameSize: DWORD;
    dwAppNameOffset: DWORD;
    dwDisplayableAddressSize: DWORD;
    dwDisplayableAddressOffset: DWORD;
    dwCalledPartySize: DWORD;
    dwCalledPartyOffset: DWORD;
    dwCommentSize: DWORD;
    dwCommentOffset: DWORD;
    dwDisplaySize: DWORD;
    dwDisplayOffset: DWORD;
    dwUserUserInfoSize: DWORD;
    dwUserUserInfoOffset: DWORD;
    dwHighLevelCompSize: DWORD;
    dwHighLevelCompOffset: DWORD;
    dwLowLevelCompSize: DWORD;
    dwLowLevelCompOffset: DWORD;
    dwChargingInfoSize: DWORD;
    dwChargingInfoOffset: DWORD;
    dwTerminalModesSize: DWORD;
    dwTerminalModesOffset: DWORD;
    dwDevSpecificSize: DWORD;
    dwDevSpecificOffset: DWORD;
    dwCallTreatment: DWORD;
    dwCallDataSize: DWORD;
    dwCallDataOffset: DWORD;
    dwSendingFlowspecSize: DWORD;
    dwSendingFlowspecOffset: DWORD;
    dwReceivingFlowspecSize: DWORD;
    dwReceivingFlowspecOffset: DWORD;
  end;
const LINEDIALPARAMS = extern struct {
    dwDialPause: u32,
    dwDialSpeed: u32,
    dwDigitDuration: u32,
    dwWaitForDialtone: u32,
};

const LINECALLINFO = extern struct {
    dwTotalSize: u32,
    dwNeededSize: u32,
    dwUsedSize: u32,
    hLine: u32,
    dwLineDeviceID: u32,
    dwAddressID: u32,
    dwBearerMode: u32,
    dwRate: u32,
    dwMediaMode: u32,
    dwAppSpecific: u32,
    dwCallID: u32,
    dwRelatedCallID: u32,
    dwCallParamFlags: u32,
    dwCallStates: u32,
    dwMonitorDigitModes: u32,
    dwMonitorMediaModes: u32,
    DialParams: LINEDIALPARAMS,
    dwOrigin: u32,
    dwReason: u32,
    dwCompletionID: u32,
    dwNumOwners: u32,
    dwNumMonitors: u32,
    dwCountryCode: u32,
    dwTrunk: u32,
    dwCallerIDFlags: u32,
    dwCallerIDSize: u32,
    dwCallerIDOffset: u32,
    dwCallerIDNameSize: u32,
    dwCallerIDNameOffset: u32,
    dwCalledIDFlags: u32,
    dwCalledIDSize: u32,
    dwCalledIDOffset: u32,
    dwCalledIDNameSize: u32,
    dwCalledIDNameOffset: u32,
    dwConnectedIDFlags: u32,
    dwConnectedIDSize: u32,
    dwConnectedIDOffset: u32,
    dwConnectedIDNameSize: u32,
    dwConnectedIDNameOffset: u32,
    dwRedirectionIDFlags: u32,
    dwRedirectionIDSize: u32,
    dwRedirectionIDOffset: u32,
    dwRedirectionIDNameSize: u32,
    dwRedirectionIDNameOffset: u32,
    dwRedirectingIDFlags: u32,
    dwRedirectingIDSize: u32,
    dwRedirectingIDOffset: u32,
    dwRedirectingIDNameSize: u32,
    dwRedirectingIDNameOffset: u32,
    dwAppNameSize: u32,
    dwAppNameOffset: u32,
    dwDisplayableAddressSize: u32,
    dwDisplayableAddressOffset: u32,
    dwCalledPartySize: u32,
    dwCalledPartyOffset: u32,
    dwCommentSize: u32,
    dwCommentOffset: u32,
    dwDisplaySize: u32,
    dwDisplayOffset: u32,
    dwUserUserInfoSize: u32,
    dwUserUserInfoOffset: u32,
    dwHighLevelCompSize: u32,
    dwHighLevelCompOffset: u32,
    dwLowLevelCompSize: u32,
    dwLowLevelCompOffset: u32,
    dwChargingInfoSize: u32,
    dwChargingInfoOffset: u32,
    dwTerminalModesSize: u32,
    dwTerminalModesOffset: u32,
    dwDevSpecificSize: u32,
    dwDevSpecificOffset: u32,
    dwCallTreatment: u32,
    dwCallDataSize: u32,
    dwCallDataOffset: u32,
    dwSendingFlowspecSize: u32,
    dwSendingFlowspecOffset: u32,
    dwReceivingFlowspecSize: u32,
    dwReceivingFlowspecOffset: u32,
};
type
  LINEDIALPARAMS {.packed.} = object
    dwDialPause: uint32
    dwDialSpeed: uint32
    dwDigitDuration: uint32
    dwWaitForDialtone: uint32

  LINECALLINFO {.packed.} = object
    dwTotalSize: uint32
    dwNeededSize: uint32
    dwUsedSize: uint32
    hLine: uint32
    dwLineDeviceID: uint32
    dwAddressID: uint32
    dwBearerMode: uint32
    dwRate: uint32
    dwMediaMode: uint32
    dwAppSpecific: uint32
    dwCallID: uint32
    dwRelatedCallID: uint32
    dwCallParamFlags: uint32
    dwCallStates: uint32
    dwMonitorDigitModes: uint32
    dwMonitorMediaModes: uint32
    DialParams: LINEDIALPARAMS
    dwOrigin: uint32
    dwReason: uint32
    dwCompletionID: uint32
    dwNumOwners: uint32
    dwNumMonitors: uint32
    dwCountryCode: uint32
    dwTrunk: uint32
    dwCallerIDFlags: uint32
    dwCallerIDSize: uint32
    dwCallerIDOffset: uint32
    dwCallerIDNameSize: uint32
    dwCallerIDNameOffset: uint32
    dwCalledIDFlags: uint32
    dwCalledIDSize: uint32
    dwCalledIDOffset: uint32
    dwCalledIDNameSize: uint32
    dwCalledIDNameOffset: uint32
    dwConnectedIDFlags: uint32
    dwConnectedIDSize: uint32
    dwConnectedIDOffset: uint32
    dwConnectedIDNameSize: uint32
    dwConnectedIDNameOffset: uint32
    dwRedirectionIDFlags: uint32
    dwRedirectionIDSize: uint32
    dwRedirectionIDOffset: uint32
    dwRedirectionIDNameSize: uint32
    dwRedirectionIDNameOffset: uint32
    dwRedirectingIDFlags: uint32
    dwRedirectingIDSize: uint32
    dwRedirectingIDOffset: uint32
    dwRedirectingIDNameSize: uint32
    dwRedirectingIDNameOffset: uint32
    dwAppNameSize: uint32
    dwAppNameOffset: uint32
    dwDisplayableAddressSize: uint32
    dwDisplayableAddressOffset: uint32
    dwCalledPartySize: uint32
    dwCalledPartyOffset: uint32
    dwCommentSize: uint32
    dwCommentOffset: uint32
    dwDisplaySize: uint32
    dwDisplayOffset: uint32
    dwUserUserInfoSize: uint32
    dwUserUserInfoOffset: uint32
    dwHighLevelCompSize: uint32
    dwHighLevelCompOffset: uint32
    dwLowLevelCompSize: uint32
    dwLowLevelCompOffset: uint32
    dwChargingInfoSize: uint32
    dwChargingInfoOffset: uint32
    dwTerminalModesSize: uint32
    dwTerminalModesOffset: uint32
    dwDevSpecificSize: uint32
    dwDevSpecificOffset: uint32
    dwCallTreatment: uint32
    dwCallDataSize: uint32
    dwCallDataOffset: uint32
    dwSendingFlowspecSize: uint32
    dwSendingFlowspecOffset: uint32
    dwReceivingFlowspecSize: uint32
    dwReceivingFlowspecOffset: uint32
align(1)
struct LINEDIALPARAMS
{
    uint dwDialPause;
    uint dwDialSpeed;
    uint dwDigitDuration;
    uint dwWaitForDialtone;
}

align(1)
struct LINECALLINFO
{
    uint dwTotalSize;
    uint dwNeededSize;
    uint dwUsedSize;
    uint hLine;
    uint dwLineDeviceID;
    uint dwAddressID;
    uint dwBearerMode;
    uint dwRate;
    uint dwMediaMode;
    uint dwAppSpecific;
    uint dwCallID;
    uint dwRelatedCallID;
    uint dwCallParamFlags;
    uint dwCallStates;
    uint dwMonitorDigitModes;
    uint dwMonitorMediaModes;
    LINEDIALPARAMS DialParams;
    uint dwOrigin;
    uint dwReason;
    uint dwCompletionID;
    uint dwNumOwners;
    uint dwNumMonitors;
    uint dwCountryCode;
    uint dwTrunk;
    uint dwCallerIDFlags;
    uint dwCallerIDSize;
    uint dwCallerIDOffset;
    uint dwCallerIDNameSize;
    uint dwCallerIDNameOffset;
    uint dwCalledIDFlags;
    uint dwCalledIDSize;
    uint dwCalledIDOffset;
    uint dwCalledIDNameSize;
    uint dwCalledIDNameOffset;
    uint dwConnectedIDFlags;
    uint dwConnectedIDSize;
    uint dwConnectedIDOffset;
    uint dwConnectedIDNameSize;
    uint dwConnectedIDNameOffset;
    uint dwRedirectionIDFlags;
    uint dwRedirectionIDSize;
    uint dwRedirectionIDOffset;
    uint dwRedirectionIDNameSize;
    uint dwRedirectionIDNameOffset;
    uint dwRedirectingIDFlags;
    uint dwRedirectingIDSize;
    uint dwRedirectingIDOffset;
    uint dwRedirectingIDNameSize;
    uint dwRedirectingIDNameOffset;
    uint dwAppNameSize;
    uint dwAppNameOffset;
    uint dwDisplayableAddressSize;
    uint dwDisplayableAddressOffset;
    uint dwCalledPartySize;
    uint dwCalledPartyOffset;
    uint dwCommentSize;
    uint dwCommentOffset;
    uint dwDisplaySize;
    uint dwDisplayOffset;
    uint dwUserUserInfoSize;
    uint dwUserUserInfoOffset;
    uint dwHighLevelCompSize;
    uint dwHighLevelCompOffset;
    uint dwLowLevelCompSize;
    uint dwLowLevelCompOffset;
    uint dwChargingInfoSize;
    uint dwChargingInfoOffset;
    uint dwTerminalModesSize;
    uint dwTerminalModesOffset;
    uint dwDevSpecificSize;
    uint dwDevSpecificOffset;
    uint dwCallTreatment;
    uint dwCallDataSize;
    uint dwCallDataOffset;
    uint dwSendingFlowspecSize;
    uint dwSendingFlowspecOffset;
    uint dwReceivingFlowspecSize;
    uint dwReceivingFlowspecOffset;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; LINECALLINFO サイズ: 324 バイト(x64)
dim st, 81    ; 4byte整数×81(構造体サイズ 324 / 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 も可)
; hLine : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwLineDeviceID : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwAddressID : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwBearerMode : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwRate : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwMediaMode : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwAppSpecific : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwCallID : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; dwRelatedCallID : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwCallParamFlags : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwCallStates : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; dwMonitorDigitModes : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; dwMonitorMediaModes : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; DialParams : LINEDIALPARAMS (+64, 16byte)  varptr(st)+64 を基点に操作(16byte:入れ子/配列)
; dwOrigin : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; dwReason : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; dwCompletionID : DWORD (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; dwNumOwners : DWORD (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; dwNumMonitors : DWORD (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; dwCountryCode : DWORD (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; dwTrunk : DWORD (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; dwCallerIDFlags : DWORD (+108, 4byte)  st.27 = 値  /  値 = st.27   (lpoke/lpeek も可)
; dwCallerIDSize : DWORD (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; dwCallerIDOffset : DWORD (+116, 4byte)  st.29 = 値  /  値 = st.29   (lpoke/lpeek も可)
; dwCallerIDNameSize : DWORD (+120, 4byte)  st.30 = 値  /  値 = st.30   (lpoke/lpeek も可)
; dwCallerIDNameOffset : DWORD (+124, 4byte)  st.31 = 値  /  値 = st.31   (lpoke/lpeek も可)
; dwCalledIDFlags : DWORD (+128, 4byte)  st.32 = 値  /  値 = st.32   (lpoke/lpeek も可)
; dwCalledIDSize : DWORD (+132, 4byte)  st.33 = 値  /  値 = st.33   (lpoke/lpeek も可)
; dwCalledIDOffset : DWORD (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; dwCalledIDNameSize : DWORD (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; dwCalledIDNameOffset : DWORD (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; dwConnectedIDFlags : DWORD (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; dwConnectedIDSize : DWORD (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; dwConnectedIDOffset : DWORD (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; dwConnectedIDNameSize : DWORD (+160, 4byte)  st.40 = 値  /  値 = st.40   (lpoke/lpeek も可)
; dwConnectedIDNameOffset : DWORD (+164, 4byte)  st.41 = 値  /  値 = st.41   (lpoke/lpeek も可)
; dwRedirectionIDFlags : DWORD (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; dwRedirectionIDSize : DWORD (+172, 4byte)  st.43 = 値  /  値 = st.43   (lpoke/lpeek も可)
; dwRedirectionIDOffset : DWORD (+176, 4byte)  st.44 = 値  /  値 = st.44   (lpoke/lpeek も可)
; dwRedirectionIDNameSize : DWORD (+180, 4byte)  st.45 = 値  /  値 = st.45   (lpoke/lpeek も可)
; dwRedirectionIDNameOffset : DWORD (+184, 4byte)  st.46 = 値  /  値 = st.46   (lpoke/lpeek も可)
; dwRedirectingIDFlags : DWORD (+188, 4byte)  st.47 = 値  /  値 = st.47   (lpoke/lpeek も可)
; dwRedirectingIDSize : DWORD (+192, 4byte)  st.48 = 値  /  値 = st.48   (lpoke/lpeek も可)
; dwRedirectingIDOffset : DWORD (+196, 4byte)  st.49 = 値  /  値 = st.49   (lpoke/lpeek も可)
; dwRedirectingIDNameSize : DWORD (+200, 4byte)  st.50 = 値  /  値 = st.50   (lpoke/lpeek も可)
; dwRedirectingIDNameOffset : DWORD (+204, 4byte)  st.51 = 値  /  値 = st.51   (lpoke/lpeek も可)
; dwAppNameSize : DWORD (+208, 4byte)  st.52 = 値  /  値 = st.52   (lpoke/lpeek も可)
; dwAppNameOffset : DWORD (+212, 4byte)  st.53 = 値  /  値 = st.53   (lpoke/lpeek も可)
; dwDisplayableAddressSize : DWORD (+216, 4byte)  st.54 = 値  /  値 = st.54   (lpoke/lpeek も可)
; dwDisplayableAddressOffset : DWORD (+220, 4byte)  st.55 = 値  /  値 = st.55   (lpoke/lpeek も可)
; dwCalledPartySize : DWORD (+224, 4byte)  st.56 = 値  /  値 = st.56   (lpoke/lpeek も可)
; dwCalledPartyOffset : DWORD (+228, 4byte)  st.57 = 値  /  値 = st.57   (lpoke/lpeek も可)
; dwCommentSize : DWORD (+232, 4byte)  st.58 = 値  /  値 = st.58   (lpoke/lpeek も可)
; dwCommentOffset : DWORD (+236, 4byte)  st.59 = 値  /  値 = st.59   (lpoke/lpeek も可)
; dwDisplaySize : DWORD (+240, 4byte)  st.60 = 値  /  値 = st.60   (lpoke/lpeek も可)
; dwDisplayOffset : DWORD (+244, 4byte)  st.61 = 値  /  値 = st.61   (lpoke/lpeek も可)
; dwUserUserInfoSize : DWORD (+248, 4byte)  st.62 = 値  /  値 = st.62   (lpoke/lpeek も可)
; dwUserUserInfoOffset : DWORD (+252, 4byte)  st.63 = 値  /  値 = st.63   (lpoke/lpeek も可)
; dwHighLevelCompSize : DWORD (+256, 4byte)  st.64 = 値  /  値 = st.64   (lpoke/lpeek も可)
; dwHighLevelCompOffset : DWORD (+260, 4byte)  st.65 = 値  /  値 = st.65   (lpoke/lpeek も可)
; dwLowLevelCompSize : DWORD (+264, 4byte)  st.66 = 値  /  値 = st.66   (lpoke/lpeek も可)
; dwLowLevelCompOffset : DWORD (+268, 4byte)  st.67 = 値  /  値 = st.67   (lpoke/lpeek も可)
; dwChargingInfoSize : DWORD (+272, 4byte)  st.68 = 値  /  値 = st.68   (lpoke/lpeek も可)
; dwChargingInfoOffset : DWORD (+276, 4byte)  st.69 = 値  /  値 = st.69   (lpoke/lpeek も可)
; dwTerminalModesSize : DWORD (+280, 4byte)  st.70 = 値  /  値 = st.70   (lpoke/lpeek も可)
; dwTerminalModesOffset : DWORD (+284, 4byte)  st.71 = 値  /  値 = st.71   (lpoke/lpeek も可)
; dwDevSpecificSize : DWORD (+288, 4byte)  st.72 = 値  /  値 = st.72   (lpoke/lpeek も可)
; dwDevSpecificOffset : DWORD (+292, 4byte)  st.73 = 値  /  値 = st.73   (lpoke/lpeek も可)
; dwCallTreatment : DWORD (+296, 4byte)  st.74 = 値  /  値 = st.74   (lpoke/lpeek も可)
; dwCallDataSize : DWORD (+300, 4byte)  st.75 = 値  /  値 = st.75   (lpoke/lpeek も可)
; dwCallDataOffset : DWORD (+304, 4byte)  st.76 = 値  /  値 = st.76   (lpoke/lpeek も可)
; dwSendingFlowspecSize : DWORD (+308, 4byte)  st.77 = 値  /  値 = st.77   (lpoke/lpeek も可)
; dwSendingFlowspecOffset : DWORD (+312, 4byte)  st.78 = 値  /  値 = st.78   (lpoke/lpeek も可)
; dwReceivingFlowspecSize : DWORD (+316, 4byte)  st.79 = 値  /  値 = st.79   (lpoke/lpeek も可)
; dwReceivingFlowspecOffset : DWORD (+320, 4byte)  st.80 = 値  /  値 = st.80   (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 LINECALLINFO, pack=1
    #field int dwTotalSize
    #field int dwNeededSize
    #field int dwUsedSize
    #field int hLine
    #field int dwLineDeviceID
    #field int dwAddressID
    #field int dwBearerMode
    #field int dwRate
    #field int dwMediaMode
    #field int dwAppSpecific
    #field int dwCallID
    #field int dwRelatedCallID
    #field int dwCallParamFlags
    #field int dwCallStates
    #field int dwMonitorDigitModes
    #field int dwMonitorMediaModes
    #field LINEDIALPARAMS DialParams
    #field int dwOrigin
    #field int dwReason
    #field int dwCompletionID
    #field int dwNumOwners
    #field int dwNumMonitors
    #field int dwCountryCode
    #field int dwTrunk
    #field int dwCallerIDFlags
    #field int dwCallerIDSize
    #field int dwCallerIDOffset
    #field int dwCallerIDNameSize
    #field int dwCallerIDNameOffset
    #field int dwCalledIDFlags
    #field int dwCalledIDSize
    #field int dwCalledIDOffset
    #field int dwCalledIDNameSize
    #field int dwCalledIDNameOffset
    #field int dwConnectedIDFlags
    #field int dwConnectedIDSize
    #field int dwConnectedIDOffset
    #field int dwConnectedIDNameSize
    #field int dwConnectedIDNameOffset
    #field int dwRedirectionIDFlags
    #field int dwRedirectionIDSize
    #field int dwRedirectionIDOffset
    #field int dwRedirectionIDNameSize
    #field int dwRedirectionIDNameOffset
    #field int dwRedirectingIDFlags
    #field int dwRedirectingIDSize
    #field int dwRedirectingIDOffset
    #field int dwRedirectingIDNameSize
    #field int dwRedirectingIDNameOffset
    #field int dwAppNameSize
    #field int dwAppNameOffset
    #field int dwDisplayableAddressSize
    #field int dwDisplayableAddressOffset
    #field int dwCalledPartySize
    #field int dwCalledPartyOffset
    #field int dwCommentSize
    #field int dwCommentOffset
    #field int dwDisplaySize
    #field int dwDisplayOffset
    #field int dwUserUserInfoSize
    #field int dwUserUserInfoOffset
    #field int dwHighLevelCompSize
    #field int dwHighLevelCompOffset
    #field int dwLowLevelCompSize
    #field int dwLowLevelCompOffset
    #field int dwChargingInfoSize
    #field int dwChargingInfoOffset
    #field int dwTerminalModesSize
    #field int dwTerminalModesOffset
    #field int dwDevSpecificSize
    #field int dwDevSpecificOffset
    #field int dwCallTreatment
    #field int dwCallDataSize
    #field int dwCallDataOffset
    #field int dwSendingFlowspecSize
    #field int dwSendingFlowspecOffset
    #field int dwReceivingFlowspecSize
    #field int dwReceivingFlowspecOffset
#endstruct

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