Win32 API 日本語リファレンス
ホームSystem.Diagnostics.Debug.ActiveScript › JsDebugPropertyInfo

JsDebugPropertyInfo

構造体
サイズx64: 40 バイト / x86: 20 バイト

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

フィールド

フィールドサイズx64x86説明
nameLPWSTR8/4+0+0プロパティ名を表すワイド文字列。
typeLPWSTR8/4+8+4プロパティの型名を表すワイド文字列。
valueLPWSTR8/4+16+8プロパティ値の文字列表現(ワイド文字列)。
fullNameLPWSTR8/4+24+12プロパティの完全修飾名を表すワイド文字列。
attrJS_PROPERTY_ATTRIBUTES4+32+16プロパティの属性(JS_PROPERTY_ATTRIBUTES:読取専用等)を示す。

各言語での定義

#include <windows.h>

// JsDebugPropertyInfo  (x64 40 / x86 20 バイト)
typedef struct JsDebugPropertyInfo {
    LPWSTR name;
    LPWSTR type;
    LPWSTR value;
    LPWSTR fullName;
    JS_PROPERTY_ATTRIBUTES attr;
} JsDebugPropertyInfo;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct JsDebugPropertyInfo
{
    public IntPtr name;
    public IntPtr type;
    public IntPtr value;
    public IntPtr fullName;
    public int attr;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure JsDebugPropertyInfo
    Public name As IntPtr
    Public type As IntPtr
    Public value As IntPtr
    Public fullName As IntPtr
    Public attr As Integer
End Structure
import ctypes
from ctypes import wintypes

class JsDebugPropertyInfo(ctypes.Structure):
    _fields_ = [
        ("name", ctypes.c_void_p),
        ("type", ctypes.c_void_p),
        ("value", ctypes.c_void_p),
        ("fullName", ctypes.c_void_p),
        ("attr", ctypes.c_int),
    ]
#[repr(C)]
pub struct JsDebugPropertyInfo {
    pub name: *mut core::ffi::c_void,
    pub type: *mut core::ffi::c_void,
    pub value: *mut core::ffi::c_void,
    pub fullName: *mut core::ffi::c_void,
    pub attr: i32,
}
import "golang.org/x/sys/windows"

type JsDebugPropertyInfo struct {
	name uintptr
	type uintptr
	value uintptr
	fullName uintptr
	attr int32
}
type
  JsDebugPropertyInfo = record
    name: Pointer;
    type: Pointer;
    value: Pointer;
    fullName: Pointer;
    attr: Integer;
  end;
const JsDebugPropertyInfo = extern struct {
    name: ?*anyopaque,
    type: ?*anyopaque,
    value: ?*anyopaque,
    fullName: ?*anyopaque,
    attr: i32,
};
type
  JsDebugPropertyInfo {.bycopy.} = object
    name: pointer
    type: pointer
    value: pointer
    fullName: pointer
    attr: int32
struct JsDebugPropertyInfo
{
    void* name;
    void* type;
    void* value;
    void* fullName;
    int attr;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; JsDebugPropertyInfo サイズ: 20 バイト(x86)
dim st, 5    ; 4byte整数×5(構造体サイズ 20 / 4 切り上げ)
; name : LPWSTR (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; type : LPWSTR (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; value : LPWSTR (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; fullName : LPWSTR (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; attr : JS_PROPERTY_ATTRIBUTES (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; JsDebugPropertyInfo サイズ: 40 バイト(x64)
dim st, 10    ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; name : LPWSTR (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; type : LPWSTR (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; value : LPWSTR (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; fullName : LPWSTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; attr : JS_PROPERTY_ATTRIBUTES (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global JsDebugPropertyInfo
    #field intptr name
    #field intptr type
    #field intptr value
    #field intptr fullName
    #field int attr
#endstruct

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