ホーム › Devices.Tapi › LINEAGENTCAPS
LINEAGENTCAPS
構造体サイズ=各フィールドのバイト数(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 | 実際に使用されたサイズをバイトで表す。 |
| dwAgentHandlerInfoSize | DWORD | 4 | +12 | +12 | エージェントハンドラ情報のサイズをバイトで表す。 |
| dwAgentHandlerInfoOffset | DWORD | 4 | +16 | +16 | エージェントハンドラ情報までのオフセット。 |
| dwCapsVersion | DWORD | 4 | +20 | +20 | エージェント能力情報のバージョン番号を表す。 |
| dwFeatures | DWORD | 4 | +24 | +24 | サポートされるエージェント機能を示すフラグ。 |
| dwStates | DWORD | 4 | +28 | +28 | サポートされるエージェント状態を示すフラグ。 |
| dwNextStates | DWORD | 4 | +32 | +32 | 遷移可能な次のエージェント状態を示すフラグ。 |
| dwMaxNumGroupEntries | DWORD | 4 | +36 | +36 | 所属可能なエージェントグループの最大数を表す。 |
| dwAgentStatusMessages | DWORD | 4 | +40 | +40 | 通知されるエージェント状態メッセージを示すフラグ。 |
| dwNumAgentExtensionIDs | DWORD | 4 | +44 | +44 | エージェント拡張IDの個数を表す。 |
| dwAgentExtensionIDListSize | DWORD | 4 | +48 | +48 | 拡張IDリストのサイズをバイトで表す。 |
| dwAgentExtensionIDListOffset | DWORD | 4 | +52 | +52 | 拡張IDリストまでのオフセットをバイトで表す。 |
| ProxyGUID | GUID | 16 | +56 | +56 | エージェントプロキシを識別するGUID。 |
各言語での定義
#include <windows.h>
// LINEAGENTCAPS (x64 72 / x86 72 バイト)
#pragma pack(push, 1)
typedef struct LINEAGENTCAPS {
DWORD dwTotalSize;
DWORD dwNeededSize;
DWORD dwUsedSize;
DWORD dwAgentHandlerInfoSize;
DWORD dwAgentHandlerInfoOffset;
DWORD dwCapsVersion;
DWORD dwFeatures;
DWORD dwStates;
DWORD dwNextStates;
DWORD dwMaxNumGroupEntries;
DWORD dwAgentStatusMessages;
DWORD dwNumAgentExtensionIDs;
DWORD dwAgentExtensionIDListSize;
DWORD dwAgentExtensionIDListOffset;
GUID ProxyGUID;
} LINEAGENTCAPS;
#pragma pack(pop)using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct LINEAGENTCAPS
{
public uint dwTotalSize;
public uint dwNeededSize;
public uint dwUsedSize;
public uint dwAgentHandlerInfoSize;
public uint dwAgentHandlerInfoOffset;
public uint dwCapsVersion;
public uint dwFeatures;
public uint dwStates;
public uint dwNextStates;
public uint dwMaxNumGroupEntries;
public uint dwAgentStatusMessages;
public uint dwNumAgentExtensionIDs;
public uint dwAgentExtensionIDListSize;
public uint dwAgentExtensionIDListOffset;
public Guid ProxyGUID;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure LINEAGENTCAPS
Public dwTotalSize As UInteger
Public dwNeededSize As UInteger
Public dwUsedSize As UInteger
Public dwAgentHandlerInfoSize As UInteger
Public dwAgentHandlerInfoOffset As UInteger
Public dwCapsVersion As UInteger
Public dwFeatures As UInteger
Public dwStates As UInteger
Public dwNextStates As UInteger
Public dwMaxNumGroupEntries As UInteger
Public dwAgentStatusMessages As UInteger
Public dwNumAgentExtensionIDs As UInteger
Public dwAgentExtensionIDListSize As UInteger
Public dwAgentExtensionIDListOffset As UInteger
Public ProxyGUID As Guid
End Structureimport ctypes
from ctypes import wintypes
class LINEAGENTCAPS(ctypes.Structure):
_pack_ = 1
_fields_ = [
("dwTotalSize", wintypes.DWORD),
("dwNeededSize", wintypes.DWORD),
("dwUsedSize", wintypes.DWORD),
("dwAgentHandlerInfoSize", wintypes.DWORD),
("dwAgentHandlerInfoOffset", wintypes.DWORD),
("dwCapsVersion", wintypes.DWORD),
("dwFeatures", wintypes.DWORD),
("dwStates", wintypes.DWORD),
("dwNextStates", wintypes.DWORD),
("dwMaxNumGroupEntries", wintypes.DWORD),
("dwAgentStatusMessages", wintypes.DWORD),
("dwNumAgentExtensionIDs", wintypes.DWORD),
("dwAgentExtensionIDListSize", wintypes.DWORD),
("dwAgentExtensionIDListOffset", wintypes.DWORD),
("ProxyGUID", GUID),
]#[repr(C, packed(1))]
pub struct LINEAGENTCAPS {
pub dwTotalSize: u32,
pub dwNeededSize: u32,
pub dwUsedSize: u32,
pub dwAgentHandlerInfoSize: u32,
pub dwAgentHandlerInfoOffset: u32,
pub dwCapsVersion: u32,
pub dwFeatures: u32,
pub dwStates: u32,
pub dwNextStates: u32,
pub dwMaxNumGroupEntries: u32,
pub dwAgentStatusMessages: u32,
pub dwNumAgentExtensionIDs: u32,
pub dwAgentExtensionIDListSize: u32,
pub dwAgentExtensionIDListOffset: u32,
pub ProxyGUID: GUID,
}import "golang.org/x/sys/windows"
type LINEAGENTCAPS struct {
dwTotalSize uint32
dwNeededSize uint32
dwUsedSize uint32
dwAgentHandlerInfoSize uint32
dwAgentHandlerInfoOffset uint32
dwCapsVersion uint32
dwFeatures uint32
dwStates uint32
dwNextStates uint32
dwMaxNumGroupEntries uint32
dwAgentStatusMessages uint32
dwNumAgentExtensionIDs uint32
dwAgentExtensionIDListSize uint32
dwAgentExtensionIDListOffset uint32
ProxyGUID windows.GUID
}type
LINEAGENTCAPS = packed record
dwTotalSize: DWORD;
dwNeededSize: DWORD;
dwUsedSize: DWORD;
dwAgentHandlerInfoSize: DWORD;
dwAgentHandlerInfoOffset: DWORD;
dwCapsVersion: DWORD;
dwFeatures: DWORD;
dwStates: DWORD;
dwNextStates: DWORD;
dwMaxNumGroupEntries: DWORD;
dwAgentStatusMessages: DWORD;
dwNumAgentExtensionIDs: DWORD;
dwAgentExtensionIDListSize: DWORD;
dwAgentExtensionIDListOffset: DWORD;
ProxyGUID: TGUID;
end;const LINEAGENTCAPS = extern struct {
dwTotalSize: u32,
dwNeededSize: u32,
dwUsedSize: u32,
dwAgentHandlerInfoSize: u32,
dwAgentHandlerInfoOffset: u32,
dwCapsVersion: u32,
dwFeatures: u32,
dwStates: u32,
dwNextStates: u32,
dwMaxNumGroupEntries: u32,
dwAgentStatusMessages: u32,
dwNumAgentExtensionIDs: u32,
dwAgentExtensionIDListSize: u32,
dwAgentExtensionIDListOffset: u32,
ProxyGUID: GUID,
};type
LINEAGENTCAPS {.packed.} = object
dwTotalSize: uint32
dwNeededSize: uint32
dwUsedSize: uint32
dwAgentHandlerInfoSize: uint32
dwAgentHandlerInfoOffset: uint32
dwCapsVersion: uint32
dwFeatures: uint32
dwStates: uint32
dwNextStates: uint32
dwMaxNumGroupEntries: uint32
dwAgentStatusMessages: uint32
dwNumAgentExtensionIDs: uint32
dwAgentExtensionIDListSize: uint32
dwAgentExtensionIDListOffset: uint32
ProxyGUID: GUIDalign(1)
struct LINEAGENTCAPS
{
uint dwTotalSize;
uint dwNeededSize;
uint dwUsedSize;
uint dwAgentHandlerInfoSize;
uint dwAgentHandlerInfoOffset;
uint dwCapsVersion;
uint dwFeatures;
uint dwStates;
uint dwNextStates;
uint dwMaxNumGroupEntries;
uint dwAgentStatusMessages;
uint dwNumAgentExtensionIDs;
uint dwAgentExtensionIDListSize;
uint dwAgentExtensionIDListOffset;
GUID ProxyGUID;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; LINEAGENTCAPS サイズ: 72 バイト(x64)
dim st, 18 ; 4byte整数×18(構造体サイズ 72 / 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 も可)
; dwAgentHandlerInfoSize : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwAgentHandlerInfoOffset : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwCapsVersion : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwFeatures : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; dwStates : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; dwNextStates : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; dwMaxNumGroupEntries : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; dwAgentStatusMessages : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; dwNumAgentExtensionIDs : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; dwAgentExtensionIDListSize : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; dwAgentExtensionIDListOffset : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ProxyGUID : GUID (+56, 16byte) varptr(st)+56 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global LINEAGENTCAPS, pack=1
#field int dwTotalSize
#field int dwNeededSize
#field int dwUsedSize
#field int dwAgentHandlerInfoSize
#field int dwAgentHandlerInfoOffset
#field int dwCapsVersion
#field int dwFeatures
#field int dwStates
#field int dwNextStates
#field int dwMaxNumGroupEntries
#field int dwAgentStatusMessages
#field int dwNumAgentExtensionIDs
#field int dwAgentExtensionIDListSize
#field int dwAgentExtensionIDListOffset
#field GUID ProxyGUID
#endstruct
stdim st, LINEAGENTCAPS ; NSTRUCT 変数を確保
st->dwTotalSize = 100
mes "dwTotalSize=" + st->dwTotalSize