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

LINEAGENTCAPS

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

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

フィールド

フィールドサイズx64x86説明
dwTotalSizeDWORD4+0+0この構造体に割り当てられた総サイズをバイトで表す。
dwNeededSizeDWORD4+4+4全情報の格納に必要なサイズをバイトで表す。
dwUsedSizeDWORD4+8+8実際に使用されたサイズをバイトで表す。
dwAgentHandlerInfoSizeDWORD4+12+12エージェントハンドラ情報のサイズをバイトで表す。
dwAgentHandlerInfoOffsetDWORD4+16+16エージェントハンドラ情報までのオフセット。
dwCapsVersionDWORD4+20+20エージェント能力情報のバージョン番号を表す。
dwFeaturesDWORD4+24+24サポートされるエージェント機能を示すフラグ。
dwStatesDWORD4+28+28サポートされるエージェント状態を示すフラグ。
dwNextStatesDWORD4+32+32遷移可能な次のエージェント状態を示すフラグ。
dwMaxNumGroupEntriesDWORD4+36+36所属可能なエージェントグループの最大数を表す。
dwAgentStatusMessagesDWORD4+40+40通知されるエージェント状態メッセージを示すフラグ。
dwNumAgentExtensionIDsDWORD4+44+44エージェント拡張IDの個数を表す。
dwAgentExtensionIDListSizeDWORD4+48+48拡張IDリストのサイズをバイトで表す。
dwAgentExtensionIDListOffsetDWORD4+52+52拡張IDリストまでのオフセットをバイトで表す。
ProxyGUIDGUID16+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 Structure
import 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: GUID
align(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