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

KDDEBUGGER_DATA32

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

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

フィールド

フィールドサイズx64x86説明
HeaderDBGKD_DEBUG_DATA_HEADER3216+0+0デバッガデータブロックの共通ヘッダ(32ビット)。
KernBaseDWORD4+16+16カーネルイメージの基底アドレス。
BreakpointWithStatusDWORD4+20+20ステータス付きブレークポイント命令のアドレス。
SavedContextDWORD4+24+24保存済みコンテキストのアドレス。
ThCallbackStackWORD2+28+28スレッドのコールバックスタックのオフセット。
NextCallbackWORD2+30+30次のコールバックフレームのオフセット。
FramePointerWORD2+32+32コールバックフレームポインタのオフセット。
_bitfieldWORD2+34+34各種フラグをまとめたビットフィールド。
KiCallUserModeDWORD4+36+36KiCallUserMode関数のアドレス。
KeUserCallbackDispatcherDWORD4+40+40ユーザーコールバックディスパッチャのアドレス。
PsLoadedModuleListDWORD4+44+44読み込み済みモジュールリストのアドレス。
PsActiveProcessHeadDWORD4+48+48アクティブプロセスリストの先頭アドレス。
PspCidTableDWORD4+52+52クライアントID(PID/TID)テーブルのアドレス。
ExpSystemResourcesListDWORD4+56+56システムリソースリストのアドレス。
ExpPagedPoolDescriptorDWORD4+60+60ページプール記述子のアドレス。
ExpNumberOfPagedPoolsDWORD4+64+64ページプールの数を保持する変数のアドレス。
KeTimeIncrementDWORD4+68+68タイマ刻み(時間増分)を保持する変数のアドレス。
KeBugCheckCallbackListHeadDWORD4+72+72バグチェックコールバックリストの先頭アドレス。
KiBugcheckDataDWORD4+76+76バグチェックデータ配列のアドレス。
IopErrorLogListHeadDWORD4+80+80I/Oエラーログリストの先頭アドレス。
ObpRootDirectoryObjectDWORD4+84+84オブジェクトマネージャのルートディレクトリのアドレス。
ObpTypeObjectTypeDWORD4+88+88型オブジェクトのタイプを示すアドレス。
MmSystemCacheStartDWORD4+92+92システムキャッシュの開始アドレス。
MmSystemCacheEndDWORD4+96+96システムキャッシュの終了アドレス。
MmSystemCacheWsDWORD4+100+100システムキャッシュのワーキングセット情報のアドレス。
MmPfnDatabaseDWORD4+104+104ページフレーム番号(PFN)データベースのアドレス。
MmSystemPtesStartDWORD4+108+108システムPTE領域の開始アドレス。
MmSystemPtesEndDWORD4+112+112システムPTE領域の終了アドレス。
MmSubsectionBaseDWORD4+116+116サブセクションの基底アドレス。
MmNumberOfPagingFilesDWORD4+120+120ページングファイル数を保持する変数のアドレス。
MmLowestPhysicalPageDWORD4+124+124最小物理ページ番号を保持する変数のアドレス。
MmHighestPhysicalPageDWORD4+128+128最大物理ページ番号を保持する変数のアドレス。
MmNumberOfPhysicalPagesDWORD4+132+132物理ページ総数を保持する変数のアドレス。
MmMaximumNonPagedPoolInBytesDWORD4+136+136非ページプールの最大バイト数を保持する変数のアドレス。
MmNonPagedSystemStartDWORD4+140+140非ページシステム領域の開始アドレス。
MmNonPagedPoolStartDWORD4+144+144非ページプールの開始アドレス。
MmNonPagedPoolEndDWORD4+148+148非ページプールの終了アドレス。
MmPagedPoolStartDWORD4+152+152ページプールの開始アドレス。
MmPagedPoolEndDWORD4+156+156ページプールの終了アドレス。
MmPagedPoolInformationDWORD4+160+160ページプール情報のアドレス。
MmPageSizeDWORD4+164+164メモリページのサイズ(バイト)。
MmSizeOfPagedPoolInBytesDWORD4+168+168ページプールのサイズ(バイト)を保持する変数のアドレス。
MmTotalCommitLimitDWORD4+172+172コミット上限を保持する変数のアドレス。
MmTotalCommittedPagesDWORD4+176+176コミット済みページ数を保持する変数のアドレス。
MmSharedCommitDWORD4+180+180共有コミット量を保持する変数のアドレス。
MmDriverCommitDWORD4+184+184ドライバのコミット量を保持する変数のアドレス。
MmProcessCommitDWORD4+188+188プロセスのコミット量を保持する変数のアドレス。
MmPagedPoolCommitDWORD4+192+192ページプールのコミット量を保持する変数のアドレス。
MmExtendedCommitDWORD4+196+196拡張コミット量を保持する変数のアドレス。
MmZeroedPageListHeadDWORD4+200+200ゼロ化済みページリストの先頭アドレス。
MmFreePageListHeadDWORD4+204+204空きページリストの先頭アドレス。
MmStandbyPageListHeadDWORD4+208+208スタンバイページリストの先頭アドレス。
MmModifiedPageListHeadDWORD4+212+212変更済みページリストの先頭アドレス。
MmModifiedNoWritePageListHeadDWORD4+216+216書き戻し不要の変更済みページリストの先頭アドレス。
MmAvailablePagesDWORD4+220+220利用可能ページ数を保持する変数のアドレス。
MmResidentAvailablePagesDWORD4+224+224常駐可能ページ数を保持する変数のアドレス。
PoolTrackTableDWORD4+228+228プール追跡テーブルのアドレス。
NonPagedPoolDescriptorDWORD4+232+232非ページプール記述子のアドレス。
MmHighestUserAddressDWORD4+236+236ユーザー空間の最高アドレスを保持する変数のアドレス。
MmSystemRangeStartDWORD4+240+240システム空間の開始アドレスを保持する変数のアドレス。
MmUserProbeAddressDWORD4+244+244ユーザーポインタ検証上限アドレスを保持する変数のアドレス。
KdPrintCircularBufferDWORD4+248+248デバッグ出力用循環バッファの開始アドレス。
KdPrintCircularBufferEndDWORD4+252+252デバッグ出力用循環バッファの終了アドレス。
KdPrintWritePointerDWORD4+256+256循環バッファの書き込み位置を保持するアドレス。
KdPrintRolloverCountDWORD4+260+260循環バッファのロールオーバー回数を保持するアドレス。
MmLoadedUserImageListDWORD4+264+264読み込み済みユーザーイメージリストのアドレス。

各言語での定義

#include <windows.h>

// LIST_ENTRY32  (x64 8 / x86 8 バイト)
typedef struct LIST_ENTRY32 {
    DWORD Flink;
    DWORD Blink;
} LIST_ENTRY32;

// DBGKD_DEBUG_DATA_HEADER32  (x64 16 / x86 16 バイト)
typedef struct DBGKD_DEBUG_DATA_HEADER32 {
    LIST_ENTRY32 List;
    DWORD OwnerTag;
    DWORD Size;
} DBGKD_DEBUG_DATA_HEADER32;

// KDDEBUGGER_DATA32  (x64 268 / x86 268 バイト)
typedef struct KDDEBUGGER_DATA32 {
    DBGKD_DEBUG_DATA_HEADER32 Header;
    DWORD KernBase;
    DWORD BreakpointWithStatus;
    DWORD SavedContext;
    WORD ThCallbackStack;
    WORD NextCallback;
    WORD FramePointer;
    WORD _bitfield;
    DWORD KiCallUserMode;
    DWORD KeUserCallbackDispatcher;
    DWORD PsLoadedModuleList;
    DWORD PsActiveProcessHead;
    DWORD PspCidTable;
    DWORD ExpSystemResourcesList;
    DWORD ExpPagedPoolDescriptor;
    DWORD ExpNumberOfPagedPools;
    DWORD KeTimeIncrement;
    DWORD KeBugCheckCallbackListHead;
    DWORD KiBugcheckData;
    DWORD IopErrorLogListHead;
    DWORD ObpRootDirectoryObject;
    DWORD ObpTypeObjectType;
    DWORD MmSystemCacheStart;
    DWORD MmSystemCacheEnd;
    DWORD MmSystemCacheWs;
    DWORD MmPfnDatabase;
    DWORD MmSystemPtesStart;
    DWORD MmSystemPtesEnd;
    DWORD MmSubsectionBase;
    DWORD MmNumberOfPagingFiles;
    DWORD MmLowestPhysicalPage;
    DWORD MmHighestPhysicalPage;
    DWORD MmNumberOfPhysicalPages;
    DWORD MmMaximumNonPagedPoolInBytes;
    DWORD MmNonPagedSystemStart;
    DWORD MmNonPagedPoolStart;
    DWORD MmNonPagedPoolEnd;
    DWORD MmPagedPoolStart;
    DWORD MmPagedPoolEnd;
    DWORD MmPagedPoolInformation;
    DWORD MmPageSize;
    DWORD MmSizeOfPagedPoolInBytes;
    DWORD MmTotalCommitLimit;
    DWORD MmTotalCommittedPages;
    DWORD MmSharedCommit;
    DWORD MmDriverCommit;
    DWORD MmProcessCommit;
    DWORD MmPagedPoolCommit;
    DWORD MmExtendedCommit;
    DWORD MmZeroedPageListHead;
    DWORD MmFreePageListHead;
    DWORD MmStandbyPageListHead;
    DWORD MmModifiedPageListHead;
    DWORD MmModifiedNoWritePageListHead;
    DWORD MmAvailablePages;
    DWORD MmResidentAvailablePages;
    DWORD PoolTrackTable;
    DWORD NonPagedPoolDescriptor;
    DWORD MmHighestUserAddress;
    DWORD MmSystemRangeStart;
    DWORD MmUserProbeAddress;
    DWORD KdPrintCircularBuffer;
    DWORD KdPrintCircularBufferEnd;
    DWORD KdPrintWritePointer;
    DWORD KdPrintRolloverCount;
    DWORD MmLoadedUserImageList;
} KDDEBUGGER_DATA32;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct LIST_ENTRY32
{
    public uint Flink;
    public uint Blink;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DBGKD_DEBUG_DATA_HEADER32
{
    public LIST_ENTRY32 List;
    public uint OwnerTag;
    public uint Size;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct KDDEBUGGER_DATA32
{
    public DBGKD_DEBUG_DATA_HEADER32 Header;
    public uint KernBase;
    public uint BreakpointWithStatus;
    public uint SavedContext;
    public ushort ThCallbackStack;
    public ushort NextCallback;
    public ushort FramePointer;
    public ushort _bitfield;
    public uint KiCallUserMode;
    public uint KeUserCallbackDispatcher;
    public uint PsLoadedModuleList;
    public uint PsActiveProcessHead;
    public uint PspCidTable;
    public uint ExpSystemResourcesList;
    public uint ExpPagedPoolDescriptor;
    public uint ExpNumberOfPagedPools;
    public uint KeTimeIncrement;
    public uint KeBugCheckCallbackListHead;
    public uint KiBugcheckData;
    public uint IopErrorLogListHead;
    public uint ObpRootDirectoryObject;
    public uint ObpTypeObjectType;
    public uint MmSystemCacheStart;
    public uint MmSystemCacheEnd;
    public uint MmSystemCacheWs;
    public uint MmPfnDatabase;
    public uint MmSystemPtesStart;
    public uint MmSystemPtesEnd;
    public uint MmSubsectionBase;
    public uint MmNumberOfPagingFiles;
    public uint MmLowestPhysicalPage;
    public uint MmHighestPhysicalPage;
    public uint MmNumberOfPhysicalPages;
    public uint MmMaximumNonPagedPoolInBytes;
    public uint MmNonPagedSystemStart;
    public uint MmNonPagedPoolStart;
    public uint MmNonPagedPoolEnd;
    public uint MmPagedPoolStart;
    public uint MmPagedPoolEnd;
    public uint MmPagedPoolInformation;
    public uint MmPageSize;
    public uint MmSizeOfPagedPoolInBytes;
    public uint MmTotalCommitLimit;
    public uint MmTotalCommittedPages;
    public uint MmSharedCommit;
    public uint MmDriverCommit;
    public uint MmProcessCommit;
    public uint MmPagedPoolCommit;
    public uint MmExtendedCommit;
    public uint MmZeroedPageListHead;
    public uint MmFreePageListHead;
    public uint MmStandbyPageListHead;
    public uint MmModifiedPageListHead;
    public uint MmModifiedNoWritePageListHead;
    public uint MmAvailablePages;
    public uint MmResidentAvailablePages;
    public uint PoolTrackTable;
    public uint NonPagedPoolDescriptor;
    public uint MmHighestUserAddress;
    public uint MmSystemRangeStart;
    public uint MmUserProbeAddress;
    public uint KdPrintCircularBuffer;
    public uint KdPrintCircularBufferEnd;
    public uint KdPrintWritePointer;
    public uint KdPrintRolloverCount;
    public uint MmLoadedUserImageList;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure LIST_ENTRY32
    Public Flink As UInteger
    Public Blink As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DBGKD_DEBUG_DATA_HEADER32
    Public List As LIST_ENTRY32
    Public OwnerTag As UInteger
    Public Size As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure KDDEBUGGER_DATA32
    Public Header As DBGKD_DEBUG_DATA_HEADER32
    Public KernBase As UInteger
    Public BreakpointWithStatus As UInteger
    Public SavedContext As UInteger
    Public ThCallbackStack As UShort
    Public NextCallback As UShort
    Public FramePointer As UShort
    Public _bitfield As UShort
    Public KiCallUserMode As UInteger
    Public KeUserCallbackDispatcher As UInteger
    Public PsLoadedModuleList As UInteger
    Public PsActiveProcessHead As UInteger
    Public PspCidTable As UInteger
    Public ExpSystemResourcesList As UInteger
    Public ExpPagedPoolDescriptor As UInteger
    Public ExpNumberOfPagedPools As UInteger
    Public KeTimeIncrement As UInteger
    Public KeBugCheckCallbackListHead As UInteger
    Public KiBugcheckData As UInteger
    Public IopErrorLogListHead As UInteger
    Public ObpRootDirectoryObject As UInteger
    Public ObpTypeObjectType As UInteger
    Public MmSystemCacheStart As UInteger
    Public MmSystemCacheEnd As UInteger
    Public MmSystemCacheWs As UInteger
    Public MmPfnDatabase As UInteger
    Public MmSystemPtesStart As UInteger
    Public MmSystemPtesEnd As UInteger
    Public MmSubsectionBase As UInteger
    Public MmNumberOfPagingFiles As UInteger
    Public MmLowestPhysicalPage As UInteger
    Public MmHighestPhysicalPage As UInteger
    Public MmNumberOfPhysicalPages As UInteger
    Public MmMaximumNonPagedPoolInBytes As UInteger
    Public MmNonPagedSystemStart As UInteger
    Public MmNonPagedPoolStart As UInteger
    Public MmNonPagedPoolEnd As UInteger
    Public MmPagedPoolStart As UInteger
    Public MmPagedPoolEnd As UInteger
    Public MmPagedPoolInformation As UInteger
    Public MmPageSize As UInteger
    Public MmSizeOfPagedPoolInBytes As UInteger
    Public MmTotalCommitLimit As UInteger
    Public MmTotalCommittedPages As UInteger
    Public MmSharedCommit As UInteger
    Public MmDriverCommit As UInteger
    Public MmProcessCommit As UInteger
    Public MmPagedPoolCommit As UInteger
    Public MmExtendedCommit As UInteger
    Public MmZeroedPageListHead As UInteger
    Public MmFreePageListHead As UInteger
    Public MmStandbyPageListHead As UInteger
    Public MmModifiedPageListHead As UInteger
    Public MmModifiedNoWritePageListHead As UInteger
    Public MmAvailablePages As UInteger
    Public MmResidentAvailablePages As UInteger
    Public PoolTrackTable As UInteger
    Public NonPagedPoolDescriptor As UInteger
    Public MmHighestUserAddress As UInteger
    Public MmSystemRangeStart As UInteger
    Public MmUserProbeAddress As UInteger
    Public KdPrintCircularBuffer As UInteger
    Public KdPrintCircularBufferEnd As UInteger
    Public KdPrintWritePointer As UInteger
    Public KdPrintRolloverCount As UInteger
    Public MmLoadedUserImageList As UInteger
End Structure
import ctypes
from ctypes import wintypes

class LIST_ENTRY32(ctypes.Structure):
    _fields_ = [
        ("Flink", wintypes.DWORD),
        ("Blink", wintypes.DWORD),
    ]

class DBGKD_DEBUG_DATA_HEADER32(ctypes.Structure):
    _fields_ = [
        ("List", LIST_ENTRY32),
        ("OwnerTag", wintypes.DWORD),
        ("Size", wintypes.DWORD),
    ]

class KDDEBUGGER_DATA32(ctypes.Structure):
    _fields_ = [
        ("Header", DBGKD_DEBUG_DATA_HEADER32),
        ("KernBase", wintypes.DWORD),
        ("BreakpointWithStatus", wintypes.DWORD),
        ("SavedContext", wintypes.DWORD),
        ("ThCallbackStack", ctypes.c_ushort),
        ("NextCallback", ctypes.c_ushort),
        ("FramePointer", ctypes.c_ushort),
        ("_bitfield", ctypes.c_ushort),
        ("KiCallUserMode", wintypes.DWORD),
        ("KeUserCallbackDispatcher", wintypes.DWORD),
        ("PsLoadedModuleList", wintypes.DWORD),
        ("PsActiveProcessHead", wintypes.DWORD),
        ("PspCidTable", wintypes.DWORD),
        ("ExpSystemResourcesList", wintypes.DWORD),
        ("ExpPagedPoolDescriptor", wintypes.DWORD),
        ("ExpNumberOfPagedPools", wintypes.DWORD),
        ("KeTimeIncrement", wintypes.DWORD),
        ("KeBugCheckCallbackListHead", wintypes.DWORD),
        ("KiBugcheckData", wintypes.DWORD),
        ("IopErrorLogListHead", wintypes.DWORD),
        ("ObpRootDirectoryObject", wintypes.DWORD),
        ("ObpTypeObjectType", wintypes.DWORD),
        ("MmSystemCacheStart", wintypes.DWORD),
        ("MmSystemCacheEnd", wintypes.DWORD),
        ("MmSystemCacheWs", wintypes.DWORD),
        ("MmPfnDatabase", wintypes.DWORD),
        ("MmSystemPtesStart", wintypes.DWORD),
        ("MmSystemPtesEnd", wintypes.DWORD),
        ("MmSubsectionBase", wintypes.DWORD),
        ("MmNumberOfPagingFiles", wintypes.DWORD),
        ("MmLowestPhysicalPage", wintypes.DWORD),
        ("MmHighestPhysicalPage", wintypes.DWORD),
        ("MmNumberOfPhysicalPages", wintypes.DWORD),
        ("MmMaximumNonPagedPoolInBytes", wintypes.DWORD),
        ("MmNonPagedSystemStart", wintypes.DWORD),
        ("MmNonPagedPoolStart", wintypes.DWORD),
        ("MmNonPagedPoolEnd", wintypes.DWORD),
        ("MmPagedPoolStart", wintypes.DWORD),
        ("MmPagedPoolEnd", wintypes.DWORD),
        ("MmPagedPoolInformation", wintypes.DWORD),
        ("MmPageSize", wintypes.DWORD),
        ("MmSizeOfPagedPoolInBytes", wintypes.DWORD),
        ("MmTotalCommitLimit", wintypes.DWORD),
        ("MmTotalCommittedPages", wintypes.DWORD),
        ("MmSharedCommit", wintypes.DWORD),
        ("MmDriverCommit", wintypes.DWORD),
        ("MmProcessCommit", wintypes.DWORD),
        ("MmPagedPoolCommit", wintypes.DWORD),
        ("MmExtendedCommit", wintypes.DWORD),
        ("MmZeroedPageListHead", wintypes.DWORD),
        ("MmFreePageListHead", wintypes.DWORD),
        ("MmStandbyPageListHead", wintypes.DWORD),
        ("MmModifiedPageListHead", wintypes.DWORD),
        ("MmModifiedNoWritePageListHead", wintypes.DWORD),
        ("MmAvailablePages", wintypes.DWORD),
        ("MmResidentAvailablePages", wintypes.DWORD),
        ("PoolTrackTable", wintypes.DWORD),
        ("NonPagedPoolDescriptor", wintypes.DWORD),
        ("MmHighestUserAddress", wintypes.DWORD),
        ("MmSystemRangeStart", wintypes.DWORD),
        ("MmUserProbeAddress", wintypes.DWORD),
        ("KdPrintCircularBuffer", wintypes.DWORD),
        ("KdPrintCircularBufferEnd", wintypes.DWORD),
        ("KdPrintWritePointer", wintypes.DWORD),
        ("KdPrintRolloverCount", wintypes.DWORD),
        ("MmLoadedUserImageList", wintypes.DWORD),
    ]
#[repr(C)]
pub struct LIST_ENTRY32 {
    pub Flink: u32,
    pub Blink: u32,
}

#[repr(C)]
pub struct DBGKD_DEBUG_DATA_HEADER32 {
    pub List: LIST_ENTRY32,
    pub OwnerTag: u32,
    pub Size: u32,
}

#[repr(C)]
pub struct KDDEBUGGER_DATA32 {
    pub Header: DBGKD_DEBUG_DATA_HEADER32,
    pub KernBase: u32,
    pub BreakpointWithStatus: u32,
    pub SavedContext: u32,
    pub ThCallbackStack: u16,
    pub NextCallback: u16,
    pub FramePointer: u16,
    pub _bitfield: u16,
    pub KiCallUserMode: u32,
    pub KeUserCallbackDispatcher: u32,
    pub PsLoadedModuleList: u32,
    pub PsActiveProcessHead: u32,
    pub PspCidTable: u32,
    pub ExpSystemResourcesList: u32,
    pub ExpPagedPoolDescriptor: u32,
    pub ExpNumberOfPagedPools: u32,
    pub KeTimeIncrement: u32,
    pub KeBugCheckCallbackListHead: u32,
    pub KiBugcheckData: u32,
    pub IopErrorLogListHead: u32,
    pub ObpRootDirectoryObject: u32,
    pub ObpTypeObjectType: u32,
    pub MmSystemCacheStart: u32,
    pub MmSystemCacheEnd: u32,
    pub MmSystemCacheWs: u32,
    pub MmPfnDatabase: u32,
    pub MmSystemPtesStart: u32,
    pub MmSystemPtesEnd: u32,
    pub MmSubsectionBase: u32,
    pub MmNumberOfPagingFiles: u32,
    pub MmLowestPhysicalPage: u32,
    pub MmHighestPhysicalPage: u32,
    pub MmNumberOfPhysicalPages: u32,
    pub MmMaximumNonPagedPoolInBytes: u32,
    pub MmNonPagedSystemStart: u32,
    pub MmNonPagedPoolStart: u32,
    pub MmNonPagedPoolEnd: u32,
    pub MmPagedPoolStart: u32,
    pub MmPagedPoolEnd: u32,
    pub MmPagedPoolInformation: u32,
    pub MmPageSize: u32,
    pub MmSizeOfPagedPoolInBytes: u32,
    pub MmTotalCommitLimit: u32,
    pub MmTotalCommittedPages: u32,
    pub MmSharedCommit: u32,
    pub MmDriverCommit: u32,
    pub MmProcessCommit: u32,
    pub MmPagedPoolCommit: u32,
    pub MmExtendedCommit: u32,
    pub MmZeroedPageListHead: u32,
    pub MmFreePageListHead: u32,
    pub MmStandbyPageListHead: u32,
    pub MmModifiedPageListHead: u32,
    pub MmModifiedNoWritePageListHead: u32,
    pub MmAvailablePages: u32,
    pub MmResidentAvailablePages: u32,
    pub PoolTrackTable: u32,
    pub NonPagedPoolDescriptor: u32,
    pub MmHighestUserAddress: u32,
    pub MmSystemRangeStart: u32,
    pub MmUserProbeAddress: u32,
    pub KdPrintCircularBuffer: u32,
    pub KdPrintCircularBufferEnd: u32,
    pub KdPrintWritePointer: u32,
    pub KdPrintRolloverCount: u32,
    pub MmLoadedUserImageList: u32,
}
import "golang.org/x/sys/windows"

type LIST_ENTRY32 struct {
	Flink uint32
	Blink uint32
}

type DBGKD_DEBUG_DATA_HEADER32 struct {
	List LIST_ENTRY32
	OwnerTag uint32
	Size uint32
}

type KDDEBUGGER_DATA32 struct {
	Header DBGKD_DEBUG_DATA_HEADER32
	KernBase uint32
	BreakpointWithStatus uint32
	SavedContext uint32
	ThCallbackStack uint16
	NextCallback uint16
	FramePointer uint16
	_bitfield uint16
	KiCallUserMode uint32
	KeUserCallbackDispatcher uint32
	PsLoadedModuleList uint32
	PsActiveProcessHead uint32
	PspCidTable uint32
	ExpSystemResourcesList uint32
	ExpPagedPoolDescriptor uint32
	ExpNumberOfPagedPools uint32
	KeTimeIncrement uint32
	KeBugCheckCallbackListHead uint32
	KiBugcheckData uint32
	IopErrorLogListHead uint32
	ObpRootDirectoryObject uint32
	ObpTypeObjectType uint32
	MmSystemCacheStart uint32
	MmSystemCacheEnd uint32
	MmSystemCacheWs uint32
	MmPfnDatabase uint32
	MmSystemPtesStart uint32
	MmSystemPtesEnd uint32
	MmSubsectionBase uint32
	MmNumberOfPagingFiles uint32
	MmLowestPhysicalPage uint32
	MmHighestPhysicalPage uint32
	MmNumberOfPhysicalPages uint32
	MmMaximumNonPagedPoolInBytes uint32
	MmNonPagedSystemStart uint32
	MmNonPagedPoolStart uint32
	MmNonPagedPoolEnd uint32
	MmPagedPoolStart uint32
	MmPagedPoolEnd uint32
	MmPagedPoolInformation uint32
	MmPageSize uint32
	MmSizeOfPagedPoolInBytes uint32
	MmTotalCommitLimit uint32
	MmTotalCommittedPages uint32
	MmSharedCommit uint32
	MmDriverCommit uint32
	MmProcessCommit uint32
	MmPagedPoolCommit uint32
	MmExtendedCommit uint32
	MmZeroedPageListHead uint32
	MmFreePageListHead uint32
	MmStandbyPageListHead uint32
	MmModifiedPageListHead uint32
	MmModifiedNoWritePageListHead uint32
	MmAvailablePages uint32
	MmResidentAvailablePages uint32
	PoolTrackTable uint32
	NonPagedPoolDescriptor uint32
	MmHighestUserAddress uint32
	MmSystemRangeStart uint32
	MmUserProbeAddress uint32
	KdPrintCircularBuffer uint32
	KdPrintCircularBufferEnd uint32
	KdPrintWritePointer uint32
	KdPrintRolloverCount uint32
	MmLoadedUserImageList uint32
}
type
  LIST_ENTRY32 = record
    Flink: DWORD;
    Blink: DWORD;
  end;

  DBGKD_DEBUG_DATA_HEADER32 = record
    List: LIST_ENTRY32;
    OwnerTag: DWORD;
    Size: DWORD;
  end;

  KDDEBUGGER_DATA32 = record
    Header: DBGKD_DEBUG_DATA_HEADER32;
    KernBase: DWORD;
    BreakpointWithStatus: DWORD;
    SavedContext: DWORD;
    ThCallbackStack: Word;
    NextCallback: Word;
    FramePointer: Word;
    _bitfield: Word;
    KiCallUserMode: DWORD;
    KeUserCallbackDispatcher: DWORD;
    PsLoadedModuleList: DWORD;
    PsActiveProcessHead: DWORD;
    PspCidTable: DWORD;
    ExpSystemResourcesList: DWORD;
    ExpPagedPoolDescriptor: DWORD;
    ExpNumberOfPagedPools: DWORD;
    KeTimeIncrement: DWORD;
    KeBugCheckCallbackListHead: DWORD;
    KiBugcheckData: DWORD;
    IopErrorLogListHead: DWORD;
    ObpRootDirectoryObject: DWORD;
    ObpTypeObjectType: DWORD;
    MmSystemCacheStart: DWORD;
    MmSystemCacheEnd: DWORD;
    MmSystemCacheWs: DWORD;
    MmPfnDatabase: DWORD;
    MmSystemPtesStart: DWORD;
    MmSystemPtesEnd: DWORD;
    MmSubsectionBase: DWORD;
    MmNumberOfPagingFiles: DWORD;
    MmLowestPhysicalPage: DWORD;
    MmHighestPhysicalPage: DWORD;
    MmNumberOfPhysicalPages: DWORD;
    MmMaximumNonPagedPoolInBytes: DWORD;
    MmNonPagedSystemStart: DWORD;
    MmNonPagedPoolStart: DWORD;
    MmNonPagedPoolEnd: DWORD;
    MmPagedPoolStart: DWORD;
    MmPagedPoolEnd: DWORD;
    MmPagedPoolInformation: DWORD;
    MmPageSize: DWORD;
    MmSizeOfPagedPoolInBytes: DWORD;
    MmTotalCommitLimit: DWORD;
    MmTotalCommittedPages: DWORD;
    MmSharedCommit: DWORD;
    MmDriverCommit: DWORD;
    MmProcessCommit: DWORD;
    MmPagedPoolCommit: DWORD;
    MmExtendedCommit: DWORD;
    MmZeroedPageListHead: DWORD;
    MmFreePageListHead: DWORD;
    MmStandbyPageListHead: DWORD;
    MmModifiedPageListHead: DWORD;
    MmModifiedNoWritePageListHead: DWORD;
    MmAvailablePages: DWORD;
    MmResidentAvailablePages: DWORD;
    PoolTrackTable: DWORD;
    NonPagedPoolDescriptor: DWORD;
    MmHighestUserAddress: DWORD;
    MmSystemRangeStart: DWORD;
    MmUserProbeAddress: DWORD;
    KdPrintCircularBuffer: DWORD;
    KdPrintCircularBufferEnd: DWORD;
    KdPrintWritePointer: DWORD;
    KdPrintRolloverCount: DWORD;
    MmLoadedUserImageList: DWORD;
  end;
const LIST_ENTRY32 = extern struct {
    Flink: u32,
    Blink: u32,
};

const DBGKD_DEBUG_DATA_HEADER32 = extern struct {
    List: LIST_ENTRY32,
    OwnerTag: u32,
    Size: u32,
};

const KDDEBUGGER_DATA32 = extern struct {
    Header: DBGKD_DEBUG_DATA_HEADER32,
    KernBase: u32,
    BreakpointWithStatus: u32,
    SavedContext: u32,
    ThCallbackStack: u16,
    NextCallback: u16,
    FramePointer: u16,
    _bitfield: u16,
    KiCallUserMode: u32,
    KeUserCallbackDispatcher: u32,
    PsLoadedModuleList: u32,
    PsActiveProcessHead: u32,
    PspCidTable: u32,
    ExpSystemResourcesList: u32,
    ExpPagedPoolDescriptor: u32,
    ExpNumberOfPagedPools: u32,
    KeTimeIncrement: u32,
    KeBugCheckCallbackListHead: u32,
    KiBugcheckData: u32,
    IopErrorLogListHead: u32,
    ObpRootDirectoryObject: u32,
    ObpTypeObjectType: u32,
    MmSystemCacheStart: u32,
    MmSystemCacheEnd: u32,
    MmSystemCacheWs: u32,
    MmPfnDatabase: u32,
    MmSystemPtesStart: u32,
    MmSystemPtesEnd: u32,
    MmSubsectionBase: u32,
    MmNumberOfPagingFiles: u32,
    MmLowestPhysicalPage: u32,
    MmHighestPhysicalPage: u32,
    MmNumberOfPhysicalPages: u32,
    MmMaximumNonPagedPoolInBytes: u32,
    MmNonPagedSystemStart: u32,
    MmNonPagedPoolStart: u32,
    MmNonPagedPoolEnd: u32,
    MmPagedPoolStart: u32,
    MmPagedPoolEnd: u32,
    MmPagedPoolInformation: u32,
    MmPageSize: u32,
    MmSizeOfPagedPoolInBytes: u32,
    MmTotalCommitLimit: u32,
    MmTotalCommittedPages: u32,
    MmSharedCommit: u32,
    MmDriverCommit: u32,
    MmProcessCommit: u32,
    MmPagedPoolCommit: u32,
    MmExtendedCommit: u32,
    MmZeroedPageListHead: u32,
    MmFreePageListHead: u32,
    MmStandbyPageListHead: u32,
    MmModifiedPageListHead: u32,
    MmModifiedNoWritePageListHead: u32,
    MmAvailablePages: u32,
    MmResidentAvailablePages: u32,
    PoolTrackTable: u32,
    NonPagedPoolDescriptor: u32,
    MmHighestUserAddress: u32,
    MmSystemRangeStart: u32,
    MmUserProbeAddress: u32,
    KdPrintCircularBuffer: u32,
    KdPrintCircularBufferEnd: u32,
    KdPrintWritePointer: u32,
    KdPrintRolloverCount: u32,
    MmLoadedUserImageList: u32,
};
type
  LIST_ENTRY32 {.bycopy.} = object
    Flink: uint32
    Blink: uint32

  DBGKD_DEBUG_DATA_HEADER32 {.bycopy.} = object
    List: LIST_ENTRY32
    OwnerTag: uint32
    Size: uint32

  KDDEBUGGER_DATA32 {.bycopy.} = object
    Header: DBGKD_DEBUG_DATA_HEADER32
    KernBase: uint32
    BreakpointWithStatus: uint32
    SavedContext: uint32
    ThCallbackStack: uint16
    NextCallback: uint16
    FramePointer: uint16
    _bitfield: uint16
    KiCallUserMode: uint32
    KeUserCallbackDispatcher: uint32
    PsLoadedModuleList: uint32
    PsActiveProcessHead: uint32
    PspCidTable: uint32
    ExpSystemResourcesList: uint32
    ExpPagedPoolDescriptor: uint32
    ExpNumberOfPagedPools: uint32
    KeTimeIncrement: uint32
    KeBugCheckCallbackListHead: uint32
    KiBugcheckData: uint32
    IopErrorLogListHead: uint32
    ObpRootDirectoryObject: uint32
    ObpTypeObjectType: uint32
    MmSystemCacheStart: uint32
    MmSystemCacheEnd: uint32
    MmSystemCacheWs: uint32
    MmPfnDatabase: uint32
    MmSystemPtesStart: uint32
    MmSystemPtesEnd: uint32
    MmSubsectionBase: uint32
    MmNumberOfPagingFiles: uint32
    MmLowestPhysicalPage: uint32
    MmHighestPhysicalPage: uint32
    MmNumberOfPhysicalPages: uint32
    MmMaximumNonPagedPoolInBytes: uint32
    MmNonPagedSystemStart: uint32
    MmNonPagedPoolStart: uint32
    MmNonPagedPoolEnd: uint32
    MmPagedPoolStart: uint32
    MmPagedPoolEnd: uint32
    MmPagedPoolInformation: uint32
    MmPageSize: uint32
    MmSizeOfPagedPoolInBytes: uint32
    MmTotalCommitLimit: uint32
    MmTotalCommittedPages: uint32
    MmSharedCommit: uint32
    MmDriverCommit: uint32
    MmProcessCommit: uint32
    MmPagedPoolCommit: uint32
    MmExtendedCommit: uint32
    MmZeroedPageListHead: uint32
    MmFreePageListHead: uint32
    MmStandbyPageListHead: uint32
    MmModifiedPageListHead: uint32
    MmModifiedNoWritePageListHead: uint32
    MmAvailablePages: uint32
    MmResidentAvailablePages: uint32
    PoolTrackTable: uint32
    NonPagedPoolDescriptor: uint32
    MmHighestUserAddress: uint32
    MmSystemRangeStart: uint32
    MmUserProbeAddress: uint32
    KdPrintCircularBuffer: uint32
    KdPrintCircularBufferEnd: uint32
    KdPrintWritePointer: uint32
    KdPrintRolloverCount: uint32
    MmLoadedUserImageList: uint32
struct LIST_ENTRY32
{
    uint Flink;
    uint Blink;
}

struct DBGKD_DEBUG_DATA_HEADER32
{
    LIST_ENTRY32 List;
    uint OwnerTag;
    uint Size;
}

struct KDDEBUGGER_DATA32
{
    DBGKD_DEBUG_DATA_HEADER32 Header;
    uint KernBase;
    uint BreakpointWithStatus;
    uint SavedContext;
    ushort ThCallbackStack;
    ushort NextCallback;
    ushort FramePointer;
    ushort _bitfield;
    uint KiCallUserMode;
    uint KeUserCallbackDispatcher;
    uint PsLoadedModuleList;
    uint PsActiveProcessHead;
    uint PspCidTable;
    uint ExpSystemResourcesList;
    uint ExpPagedPoolDescriptor;
    uint ExpNumberOfPagedPools;
    uint KeTimeIncrement;
    uint KeBugCheckCallbackListHead;
    uint KiBugcheckData;
    uint IopErrorLogListHead;
    uint ObpRootDirectoryObject;
    uint ObpTypeObjectType;
    uint MmSystemCacheStart;
    uint MmSystemCacheEnd;
    uint MmSystemCacheWs;
    uint MmPfnDatabase;
    uint MmSystemPtesStart;
    uint MmSystemPtesEnd;
    uint MmSubsectionBase;
    uint MmNumberOfPagingFiles;
    uint MmLowestPhysicalPage;
    uint MmHighestPhysicalPage;
    uint MmNumberOfPhysicalPages;
    uint MmMaximumNonPagedPoolInBytes;
    uint MmNonPagedSystemStart;
    uint MmNonPagedPoolStart;
    uint MmNonPagedPoolEnd;
    uint MmPagedPoolStart;
    uint MmPagedPoolEnd;
    uint MmPagedPoolInformation;
    uint MmPageSize;
    uint MmSizeOfPagedPoolInBytes;
    uint MmTotalCommitLimit;
    uint MmTotalCommittedPages;
    uint MmSharedCommit;
    uint MmDriverCommit;
    uint MmProcessCommit;
    uint MmPagedPoolCommit;
    uint MmExtendedCommit;
    uint MmZeroedPageListHead;
    uint MmFreePageListHead;
    uint MmStandbyPageListHead;
    uint MmModifiedPageListHead;
    uint MmModifiedNoWritePageListHead;
    uint MmAvailablePages;
    uint MmResidentAvailablePages;
    uint PoolTrackTable;
    uint NonPagedPoolDescriptor;
    uint MmHighestUserAddress;
    uint MmSystemRangeStart;
    uint MmUserProbeAddress;
    uint KdPrintCircularBuffer;
    uint KdPrintCircularBufferEnd;
    uint KdPrintWritePointer;
    uint KdPrintRolloverCount;
    uint MmLoadedUserImageList;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; KDDEBUGGER_DATA32 サイズ: 268 バイト(x64)
dim st, 67    ; 4byte整数×67(構造体サイズ 268 / 4 切り上げ)
; Header : DBGKD_DEBUG_DATA_HEADER32 (+0, 16byte)  varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; KernBase : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; BreakpointWithStatus : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; SavedContext : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; ThCallbackStack : WORD (+28, 2byte)  wpoke st,28,値  /  値 = wpeek(st,28)
; NextCallback : WORD (+30, 2byte)  wpoke st,30,値  /  値 = wpeek(st,30)
; FramePointer : WORD (+32, 2byte)  wpoke st,32,値  /  値 = wpeek(st,32)
; _bitfield : WORD (+34, 2byte)  wpoke st,34,値  /  値 = wpeek(st,34)
; KiCallUserMode : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; KeUserCallbackDispatcher : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; PsLoadedModuleList : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; PsActiveProcessHead : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; PspCidTable : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; ExpSystemResourcesList : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; ExpPagedPoolDescriptor : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; ExpNumberOfPagedPools : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; KeTimeIncrement : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; KeBugCheckCallbackListHead : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; KiBugcheckData : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; IopErrorLogListHead : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; ObpRootDirectoryObject : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; ObpTypeObjectType : DWORD (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; MmSystemCacheStart : DWORD (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; MmSystemCacheEnd : DWORD (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; MmSystemCacheWs : DWORD (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; MmPfnDatabase : DWORD (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; MmSystemPtesStart : DWORD (+108, 4byte)  st.27 = 値  /  値 = st.27   (lpoke/lpeek も可)
; MmSystemPtesEnd : DWORD (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; MmSubsectionBase : DWORD (+116, 4byte)  st.29 = 値  /  値 = st.29   (lpoke/lpeek も可)
; MmNumberOfPagingFiles : DWORD (+120, 4byte)  st.30 = 値  /  値 = st.30   (lpoke/lpeek も可)
; MmLowestPhysicalPage : DWORD (+124, 4byte)  st.31 = 値  /  値 = st.31   (lpoke/lpeek も可)
; MmHighestPhysicalPage : DWORD (+128, 4byte)  st.32 = 値  /  値 = st.32   (lpoke/lpeek も可)
; MmNumberOfPhysicalPages : DWORD (+132, 4byte)  st.33 = 値  /  値 = st.33   (lpoke/lpeek も可)
; MmMaximumNonPagedPoolInBytes : DWORD (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; MmNonPagedSystemStart : DWORD (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; MmNonPagedPoolStart : DWORD (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; MmNonPagedPoolEnd : DWORD (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; MmPagedPoolStart : DWORD (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; MmPagedPoolEnd : DWORD (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; MmPagedPoolInformation : DWORD (+160, 4byte)  st.40 = 値  /  値 = st.40   (lpoke/lpeek も可)
; MmPageSize : DWORD (+164, 4byte)  st.41 = 値  /  値 = st.41   (lpoke/lpeek も可)
; MmSizeOfPagedPoolInBytes : DWORD (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; MmTotalCommitLimit : DWORD (+172, 4byte)  st.43 = 値  /  値 = st.43   (lpoke/lpeek も可)
; MmTotalCommittedPages : DWORD (+176, 4byte)  st.44 = 値  /  値 = st.44   (lpoke/lpeek も可)
; MmSharedCommit : DWORD (+180, 4byte)  st.45 = 値  /  値 = st.45   (lpoke/lpeek も可)
; MmDriverCommit : DWORD (+184, 4byte)  st.46 = 値  /  値 = st.46   (lpoke/lpeek も可)
; MmProcessCommit : DWORD (+188, 4byte)  st.47 = 値  /  値 = st.47   (lpoke/lpeek も可)
; MmPagedPoolCommit : DWORD (+192, 4byte)  st.48 = 値  /  値 = st.48   (lpoke/lpeek も可)
; MmExtendedCommit : DWORD (+196, 4byte)  st.49 = 値  /  値 = st.49   (lpoke/lpeek も可)
; MmZeroedPageListHead : DWORD (+200, 4byte)  st.50 = 値  /  値 = st.50   (lpoke/lpeek も可)
; MmFreePageListHead : DWORD (+204, 4byte)  st.51 = 値  /  値 = st.51   (lpoke/lpeek も可)
; MmStandbyPageListHead : DWORD (+208, 4byte)  st.52 = 値  /  値 = st.52   (lpoke/lpeek も可)
; MmModifiedPageListHead : DWORD (+212, 4byte)  st.53 = 値  /  値 = st.53   (lpoke/lpeek も可)
; MmModifiedNoWritePageListHead : DWORD (+216, 4byte)  st.54 = 値  /  値 = st.54   (lpoke/lpeek も可)
; MmAvailablePages : DWORD (+220, 4byte)  st.55 = 値  /  値 = st.55   (lpoke/lpeek も可)
; MmResidentAvailablePages : DWORD (+224, 4byte)  st.56 = 値  /  値 = st.56   (lpoke/lpeek も可)
; PoolTrackTable : DWORD (+228, 4byte)  st.57 = 値  /  値 = st.57   (lpoke/lpeek も可)
; NonPagedPoolDescriptor : DWORD (+232, 4byte)  st.58 = 値  /  値 = st.58   (lpoke/lpeek も可)
; MmHighestUserAddress : DWORD (+236, 4byte)  st.59 = 値  /  値 = st.59   (lpoke/lpeek も可)
; MmSystemRangeStart : DWORD (+240, 4byte)  st.60 = 値  /  値 = st.60   (lpoke/lpeek も可)
; MmUserProbeAddress : DWORD (+244, 4byte)  st.61 = 値  /  値 = st.61   (lpoke/lpeek も可)
; KdPrintCircularBuffer : DWORD (+248, 4byte)  st.62 = 値  /  値 = st.62   (lpoke/lpeek も可)
; KdPrintCircularBufferEnd : DWORD (+252, 4byte)  st.63 = 値  /  値 = st.63   (lpoke/lpeek も可)
; KdPrintWritePointer : DWORD (+256, 4byte)  st.64 = 値  /  値 = st.64   (lpoke/lpeek も可)
; KdPrintRolloverCount : DWORD (+260, 4byte)  st.65 = 値  /  値 = st.65   (lpoke/lpeek も可)
; MmLoadedUserImageList : DWORD (+264, 4byte)  st.66 = 値  /  値 = st.66   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global LIST_ENTRY32
    #field int Flink
    #field int Blink
#endstruct

#defstruct global DBGKD_DEBUG_DATA_HEADER32
    #field LIST_ENTRY32 List
    #field int OwnerTag
    #field int Size
#endstruct

#defstruct global KDDEBUGGER_DATA32
    #field DBGKD_DEBUG_DATA_HEADER32 Header
    #field int KernBase
    #field int BreakpointWithStatus
    #field int SavedContext
    #field short ThCallbackStack
    #field short NextCallback
    #field short FramePointer
    #field short _bitfield
    #field int KiCallUserMode
    #field int KeUserCallbackDispatcher
    #field int PsLoadedModuleList
    #field int PsActiveProcessHead
    #field int PspCidTable
    #field int ExpSystemResourcesList
    #field int ExpPagedPoolDescriptor
    #field int ExpNumberOfPagedPools
    #field int KeTimeIncrement
    #field int KeBugCheckCallbackListHead
    #field int KiBugcheckData
    #field int IopErrorLogListHead
    #field int ObpRootDirectoryObject
    #field int ObpTypeObjectType
    #field int MmSystemCacheStart
    #field int MmSystemCacheEnd
    #field int MmSystemCacheWs
    #field int MmPfnDatabase
    #field int MmSystemPtesStart
    #field int MmSystemPtesEnd
    #field int MmSubsectionBase
    #field int MmNumberOfPagingFiles
    #field int MmLowestPhysicalPage
    #field int MmHighestPhysicalPage
    #field int MmNumberOfPhysicalPages
    #field int MmMaximumNonPagedPoolInBytes
    #field int MmNonPagedSystemStart
    #field int MmNonPagedPoolStart
    #field int MmNonPagedPoolEnd
    #field int MmPagedPoolStart
    #field int MmPagedPoolEnd
    #field int MmPagedPoolInformation
    #field int MmPageSize
    #field int MmSizeOfPagedPoolInBytes
    #field int MmTotalCommitLimit
    #field int MmTotalCommittedPages
    #field int MmSharedCommit
    #field int MmDriverCommit
    #field int MmProcessCommit
    #field int MmPagedPoolCommit
    #field int MmExtendedCommit
    #field int MmZeroedPageListHead
    #field int MmFreePageListHead
    #field int MmStandbyPageListHead
    #field int MmModifiedPageListHead
    #field int MmModifiedNoWritePageListHead
    #field int MmAvailablePages
    #field int MmResidentAvailablePages
    #field int PoolTrackTable
    #field int NonPagedPoolDescriptor
    #field int MmHighestUserAddress
    #field int MmSystemRangeStart
    #field int MmUserProbeAddress
    #field int KdPrintCircularBuffer
    #field int KdPrintCircularBufferEnd
    #field int KdPrintWritePointer
    #field int KdPrintRolloverCount
    #field int MmLoadedUserImageList
#endstruct

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