Win32 API 日本語リファレンス
ホームStorage.Jet › JET_DBINFOMISC2

JET_DBINFOMISC2

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

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

フィールド

フィールドサイズx64x86説明
ulVersionDWORD4+0+0データベースエンジンのフォーマットバージョン番号。
ulUpdateDWORD4+4+4フォーマットの更新(マイナー)バージョン番号。
signDbJET_SIGNATURE44/36+8+8データベースを一意に識別する署名JET_SIGNATURE。
dbstateDWORD4+52+44データベースの状態を示す値。
lgposConsistentJET_LGPOS8+56+48最後に整合状態となったログ位置JET_LGPOS。
logtimeConsistentJET_LOGTIME24/16+64+56最後に整合状態となった時刻JET_LOGTIME。
logtimeAttachJET_LOGTIME24/16+88+72データベースがアタッチされた時刻JET_LOGTIME。
lgposAttachJET_LGPOS8+112+88アタッチ時のログ位置JET_LGPOS。
logtimeDetachJET_LOGTIME24/16+120+96データベースがデタッチされた時刻JET_LOGTIME。
lgposDetachJET_LGPOS8+144+112デタッチ時のログ位置JET_LGPOS。
signLogJET_SIGNATURE44/36+152+120関連するログストリームの署名JET_SIGNATURE。
bkinfoFullPrevJET_BKINFO40/32+196+156直前のフルバックアップ情報JET_BKINFO。
bkinfoIncPrevJET_BKINFO40/32+236+188直前の増分バックアップ情報JET_BKINFO。
bkinfoFullCurJET_BKINFO40/32+276+220進行中のフルバックアップ情報JET_BKINFO。
fShadowingDisabledDWORD4+316+252シャドウ(冗長コピー)が無効かを示すフラグ。
fUpgradeDbDWORD4+320+256アップグレードが必要かを示すフラグ。
dwMajorVersionDWORD4+324+260作成したOSのメジャーバージョン番号。
dwMinorVersionDWORD4+328+264作成したOSのマイナーバージョン番号。
dwBuildNumberDWORD4+332+268作成したOSのビルド番号。
lSPNumberINT4+336+272作成したOSのサービスパック番号。
cbPageSizeDWORD4+340+276データベースのページサイズ(バイト)。
genMinRequiredDWORD4+344+280リカバリに必要な最小ログ生成番号。
genMaxRequiredDWORD4+348+284リカバリに必要な最大ログ生成番号。
logtimeGenMaxCreateJET_LOGTIME24/16+352+288最大必要ログ生成が作成された時刻JET_LOGTIME。
ulRepairCountDWORD4+376+304実行された修復操作の累計回数。
logtimeRepairJET_LOGTIME24/16+384+308最後に修復が行われた時刻JET_LOGTIME。
ulRepairCountOldDWORD4+408+324以前のフォーマットでの修復回数(履歴)。
ulECCFixSuccessDWORD4+412+328ECCで訂正に成功したページ数。
logtimeECCFixSuccessJET_LOGTIME24/16+416+332最後にECC訂正に成功した時刻JET_LOGTIME。
ulECCFixSuccessOldDWORD4+440+348以前のECC訂正成功回数(履歴)。
ulECCFixFailDWORD4+444+352ECC訂正に失敗したページ数。
logtimeECCFixFailJET_LOGTIME24/16+448+356最後にECC訂正に失敗した時刻JET_LOGTIME。
ulECCFixFailOldDWORD4+472+372以前のECC訂正失敗回数(履歴)。
ulBadChecksumDWORD4+476+376チェックサム不一致が検出された回数。
logtimeBadChecksumJET_LOGTIME24/16+480+380最後にチェックサム不一致を検出した時刻JET_LOGTIME。
ulBadChecksumOldDWORD4+504+396以前のチェックサム不一致回数(履歴)。

各言語での定義

#include <windows.h>

// JET_LOGTIME  (x64 24 / x86 16 バイト)
typedef struct JET_LOGTIME {
    CHAR bSeconds;
    CHAR bMinutes;
    CHAR bHours;
    CHAR bDay;
    CHAR bMonth;
    CHAR bYear;
    _Anonymous1_e__Union Anonymous1;
    _Anonymous2_e__Union Anonymous2;
} JET_LOGTIME;

// JET_SIGNATURE  (x64 44 / x86 36 バイト)
#pragma pack(push, 1)
typedef struct JET_SIGNATURE {
    DWORD ulRandom;
    JET_LOGTIME logtimeCreate;
    CHAR szComputerName[16];
} JET_SIGNATURE;
#pragma pack(pop)

// JET_LGPOS  (x64 8 / x86 8 バイト)
#pragma pack(push, 1)
typedef struct JET_LGPOS {
    WORD ib;
    WORD isec;
    INT lGeneration;
} JET_LGPOS;
#pragma pack(pop)

// JET_BKINFO  (x64 40 / x86 32 バイト)
#pragma pack(push, 1)
typedef struct JET_BKINFO {
    JET_LGPOS lgposMark;
    _Anonymous_e__Union Anonymous;
    DWORD genLow;
    DWORD genHigh;
} JET_BKINFO;
#pragma pack(pop)

// JET_DBINFOMISC2  (x64 512 / x86 400 バイト)
typedef struct JET_DBINFOMISC2 {
    DWORD ulVersion;
    DWORD ulUpdate;
    JET_SIGNATURE signDb;
    DWORD dbstate;
    JET_LGPOS lgposConsistent;
    JET_LOGTIME logtimeConsistent;
    JET_LOGTIME logtimeAttach;
    JET_LGPOS lgposAttach;
    JET_LOGTIME logtimeDetach;
    JET_LGPOS lgposDetach;
    JET_SIGNATURE signLog;
    JET_BKINFO bkinfoFullPrev;
    JET_BKINFO bkinfoIncPrev;
    JET_BKINFO bkinfoFullCur;
    DWORD fShadowingDisabled;
    DWORD fUpgradeDb;
    DWORD dwMajorVersion;
    DWORD dwMinorVersion;
    DWORD dwBuildNumber;
    INT lSPNumber;
    DWORD cbPageSize;
    DWORD genMinRequired;
    DWORD genMaxRequired;
    JET_LOGTIME logtimeGenMaxCreate;
    DWORD ulRepairCount;
    JET_LOGTIME logtimeRepair;
    DWORD ulRepairCountOld;
    DWORD ulECCFixSuccess;
    JET_LOGTIME logtimeECCFixSuccess;
    DWORD ulECCFixSuccessOld;
    DWORD ulECCFixFail;
    JET_LOGTIME logtimeECCFixFail;
    DWORD ulECCFixFailOld;
    DWORD ulBadChecksum;
    JET_LOGTIME logtimeBadChecksum;
    DWORD ulBadChecksumOld;
} JET_DBINFOMISC2;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct JET_LOGTIME
{
    public sbyte bSeconds;
    public sbyte bMinutes;
    public sbyte bHours;
    public sbyte bDay;
    public sbyte bMonth;
    public sbyte bYear;
    public _Anonymous1_e__Union Anonymous1;
    public _Anonymous2_e__Union Anonymous2;
}

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct JET_SIGNATURE
{
    public uint ulRandom;
    public JET_LOGTIME logtimeCreate;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public sbyte[] szComputerName;
}

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct JET_LGPOS
{
    public ushort ib;
    public ushort isec;
    public int lGeneration;
}

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct JET_BKINFO
{
    public JET_LGPOS lgposMark;
    public _Anonymous_e__Union Anonymous;
    public uint genLow;
    public uint genHigh;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct JET_DBINFOMISC2
{
    public uint ulVersion;
    public uint ulUpdate;
    public JET_SIGNATURE signDb;
    public uint dbstate;
    public JET_LGPOS lgposConsistent;
    public JET_LOGTIME logtimeConsistent;
    public JET_LOGTIME logtimeAttach;
    public JET_LGPOS lgposAttach;
    public JET_LOGTIME logtimeDetach;
    public JET_LGPOS lgposDetach;
    public JET_SIGNATURE signLog;
    public JET_BKINFO bkinfoFullPrev;
    public JET_BKINFO bkinfoIncPrev;
    public JET_BKINFO bkinfoFullCur;
    public uint fShadowingDisabled;
    public uint fUpgradeDb;
    public uint dwMajorVersion;
    public uint dwMinorVersion;
    public uint dwBuildNumber;
    public int lSPNumber;
    public uint cbPageSize;
    public uint genMinRequired;
    public uint genMaxRequired;
    public JET_LOGTIME logtimeGenMaxCreate;
    public uint ulRepairCount;
    public JET_LOGTIME logtimeRepair;
    public uint ulRepairCountOld;
    public uint ulECCFixSuccess;
    public JET_LOGTIME logtimeECCFixSuccess;
    public uint ulECCFixSuccessOld;
    public uint ulECCFixFail;
    public JET_LOGTIME logtimeECCFixFail;
    public uint ulECCFixFailOld;
    public uint ulBadChecksum;
    public JET_LOGTIME logtimeBadChecksum;
    public uint ulBadChecksumOld;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure JET_LOGTIME
    Public bSeconds As SByte
    Public bMinutes As SByte
    Public bHours As SByte
    Public bDay As SByte
    Public bMonth As SByte
    Public bYear As SByte
    Public Anonymous1 As _Anonymous1_e__Union
    Public Anonymous2 As _Anonymous2_e__Union
End Structure

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure JET_SIGNATURE
    Public ulRandom As UInteger
    Public logtimeCreate As JET_LOGTIME
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public szComputerName() As SByte
End Structure

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure JET_LGPOS
    Public ib As UShort
    Public isec As UShort
    Public lGeneration As Integer
End Structure

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure JET_BKINFO
    Public lgposMark As JET_LGPOS
    Public Anonymous As _Anonymous_e__Union
    Public genLow As UInteger
    Public genHigh As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure JET_DBINFOMISC2
    Public ulVersion As UInteger
    Public ulUpdate As UInteger
    Public signDb As JET_SIGNATURE
    Public dbstate As UInteger
    Public lgposConsistent As JET_LGPOS
    Public logtimeConsistent As JET_LOGTIME
    Public logtimeAttach As JET_LOGTIME
    Public lgposAttach As JET_LGPOS
    Public logtimeDetach As JET_LOGTIME
    Public lgposDetach As JET_LGPOS
    Public signLog As JET_SIGNATURE
    Public bkinfoFullPrev As JET_BKINFO
    Public bkinfoIncPrev As JET_BKINFO
    Public bkinfoFullCur As JET_BKINFO
    Public fShadowingDisabled As UInteger
    Public fUpgradeDb As UInteger
    Public dwMajorVersion As UInteger
    Public dwMinorVersion As UInteger
    Public dwBuildNumber As UInteger
    Public lSPNumber As Integer
    Public cbPageSize As UInteger
    Public genMinRequired As UInteger
    Public genMaxRequired As UInteger
    Public logtimeGenMaxCreate As JET_LOGTIME
    Public ulRepairCount As UInteger
    Public logtimeRepair As JET_LOGTIME
    Public ulRepairCountOld As UInteger
    Public ulECCFixSuccess As UInteger
    Public logtimeECCFixSuccess As JET_LOGTIME
    Public ulECCFixSuccessOld As UInteger
    Public ulECCFixFail As UInteger
    Public logtimeECCFixFail As JET_LOGTIME
    Public ulECCFixFailOld As UInteger
    Public ulBadChecksum As UInteger
    Public logtimeBadChecksum As JET_LOGTIME
    Public ulBadChecksumOld As UInteger
End Structure
import ctypes
from ctypes import wintypes

class JET_LOGTIME(ctypes.Structure):
    _fields_ = [
        ("bSeconds", ctypes.c_byte),
        ("bMinutes", ctypes.c_byte),
        ("bHours", ctypes.c_byte),
        ("bDay", ctypes.c_byte),
        ("bMonth", ctypes.c_byte),
        ("bYear", ctypes.c_byte),
        ("Anonymous1", _Anonymous1_e__Union),
        ("Anonymous2", _Anonymous2_e__Union),
    ]

class JET_SIGNATURE(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("ulRandom", wintypes.DWORD),
        ("logtimeCreate", JET_LOGTIME),
        ("szComputerName", ctypes.c_byte * 16),
    ]

class JET_LGPOS(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("ib", ctypes.c_ushort),
        ("isec", ctypes.c_ushort),
        ("lGeneration", ctypes.c_int),
    ]

class JET_BKINFO(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("lgposMark", JET_LGPOS),
        ("Anonymous", _Anonymous_e__Union),
        ("genLow", wintypes.DWORD),
        ("genHigh", wintypes.DWORD),
    ]

class JET_DBINFOMISC2(ctypes.Structure):
    _fields_ = [
        ("ulVersion", wintypes.DWORD),
        ("ulUpdate", wintypes.DWORD),
        ("signDb", JET_SIGNATURE),
        ("dbstate", wintypes.DWORD),
        ("lgposConsistent", JET_LGPOS),
        ("logtimeConsistent", JET_LOGTIME),
        ("logtimeAttach", JET_LOGTIME),
        ("lgposAttach", JET_LGPOS),
        ("logtimeDetach", JET_LOGTIME),
        ("lgposDetach", JET_LGPOS),
        ("signLog", JET_SIGNATURE),
        ("bkinfoFullPrev", JET_BKINFO),
        ("bkinfoIncPrev", JET_BKINFO),
        ("bkinfoFullCur", JET_BKINFO),
        ("fShadowingDisabled", wintypes.DWORD),
        ("fUpgradeDb", wintypes.DWORD),
        ("dwMajorVersion", wintypes.DWORD),
        ("dwMinorVersion", wintypes.DWORD),
        ("dwBuildNumber", wintypes.DWORD),
        ("lSPNumber", ctypes.c_int),
        ("cbPageSize", wintypes.DWORD),
        ("genMinRequired", wintypes.DWORD),
        ("genMaxRequired", wintypes.DWORD),
        ("logtimeGenMaxCreate", JET_LOGTIME),
        ("ulRepairCount", wintypes.DWORD),
        ("logtimeRepair", JET_LOGTIME),
        ("ulRepairCountOld", wintypes.DWORD),
        ("ulECCFixSuccess", wintypes.DWORD),
        ("logtimeECCFixSuccess", JET_LOGTIME),
        ("ulECCFixSuccessOld", wintypes.DWORD),
        ("ulECCFixFail", wintypes.DWORD),
        ("logtimeECCFixFail", JET_LOGTIME),
        ("ulECCFixFailOld", wintypes.DWORD),
        ("ulBadChecksum", wintypes.DWORD),
        ("logtimeBadChecksum", JET_LOGTIME),
        ("ulBadChecksumOld", wintypes.DWORD),
    ]
#[repr(C)]
pub struct JET_LOGTIME {
    pub bSeconds: i8,
    pub bMinutes: i8,
    pub bHours: i8,
    pub bDay: i8,
    pub bMonth: i8,
    pub bYear: i8,
    pub Anonymous1: _Anonymous1_e__Union,
    pub Anonymous2: _Anonymous2_e__Union,
}

#[repr(C, packed(1))]
pub struct JET_SIGNATURE {
    pub ulRandom: u32,
    pub logtimeCreate: JET_LOGTIME,
    pub szComputerName: [i8; 16],
}

#[repr(C, packed(1))]
pub struct JET_LGPOS {
    pub ib: u16,
    pub isec: u16,
    pub lGeneration: i32,
}

#[repr(C, packed(1))]
pub struct JET_BKINFO {
    pub lgposMark: JET_LGPOS,
    pub Anonymous: _Anonymous_e__Union,
    pub genLow: u32,
    pub genHigh: u32,
}

#[repr(C)]
pub struct JET_DBINFOMISC2 {
    pub ulVersion: u32,
    pub ulUpdate: u32,
    pub signDb: JET_SIGNATURE,
    pub dbstate: u32,
    pub lgposConsistent: JET_LGPOS,
    pub logtimeConsistent: JET_LOGTIME,
    pub logtimeAttach: JET_LOGTIME,
    pub lgposAttach: JET_LGPOS,
    pub logtimeDetach: JET_LOGTIME,
    pub lgposDetach: JET_LGPOS,
    pub signLog: JET_SIGNATURE,
    pub bkinfoFullPrev: JET_BKINFO,
    pub bkinfoIncPrev: JET_BKINFO,
    pub bkinfoFullCur: JET_BKINFO,
    pub fShadowingDisabled: u32,
    pub fUpgradeDb: u32,
    pub dwMajorVersion: u32,
    pub dwMinorVersion: u32,
    pub dwBuildNumber: u32,
    pub lSPNumber: i32,
    pub cbPageSize: u32,
    pub genMinRequired: u32,
    pub genMaxRequired: u32,
    pub logtimeGenMaxCreate: JET_LOGTIME,
    pub ulRepairCount: u32,
    pub logtimeRepair: JET_LOGTIME,
    pub ulRepairCountOld: u32,
    pub ulECCFixSuccess: u32,
    pub logtimeECCFixSuccess: JET_LOGTIME,
    pub ulECCFixSuccessOld: u32,
    pub ulECCFixFail: u32,
    pub logtimeECCFixFail: JET_LOGTIME,
    pub ulECCFixFailOld: u32,
    pub ulBadChecksum: u32,
    pub logtimeBadChecksum: JET_LOGTIME,
    pub ulBadChecksumOld: u32,
}
import "golang.org/x/sys/windows"

type JET_LOGTIME struct {
	bSeconds int8
	bMinutes int8
	bHours int8
	bDay int8
	bMonth int8
	bYear int8
	Anonymous1 _Anonymous1_e__Union
	Anonymous2 _Anonymous2_e__Union
}

type JET_SIGNATURE struct {
	ulRandom uint32
	logtimeCreate JET_LOGTIME
	szComputerName [16]int8
}

type JET_LGPOS struct {
	ib uint16
	isec uint16
	lGeneration int32
}

type JET_BKINFO struct {
	lgposMark JET_LGPOS
	Anonymous _Anonymous_e__Union
	genLow uint32
	genHigh uint32
}

type JET_DBINFOMISC2 struct {
	ulVersion uint32
	ulUpdate uint32
	signDb JET_SIGNATURE
	dbstate uint32
	lgposConsistent JET_LGPOS
	logtimeConsistent JET_LOGTIME
	logtimeAttach JET_LOGTIME
	lgposAttach JET_LGPOS
	logtimeDetach JET_LOGTIME
	lgposDetach JET_LGPOS
	signLog JET_SIGNATURE
	bkinfoFullPrev JET_BKINFO
	bkinfoIncPrev JET_BKINFO
	bkinfoFullCur JET_BKINFO
	fShadowingDisabled uint32
	fUpgradeDb uint32
	dwMajorVersion uint32
	dwMinorVersion uint32
	dwBuildNumber uint32
	lSPNumber int32
	cbPageSize uint32
	genMinRequired uint32
	genMaxRequired uint32
	logtimeGenMaxCreate JET_LOGTIME
	ulRepairCount uint32
	logtimeRepair JET_LOGTIME
	ulRepairCountOld uint32
	ulECCFixSuccess uint32
	logtimeECCFixSuccess JET_LOGTIME
	ulECCFixSuccessOld uint32
	ulECCFixFail uint32
	logtimeECCFixFail JET_LOGTIME
	ulECCFixFailOld uint32
	ulBadChecksum uint32
	logtimeBadChecksum JET_LOGTIME
	ulBadChecksumOld uint32
}
type
  JET_LOGTIME = record
    bSeconds: Shortint;
    bMinutes: Shortint;
    bHours: Shortint;
    bDay: Shortint;
    bMonth: Shortint;
    bYear: Shortint;
    Anonymous1: _Anonymous1_e__Union;
    Anonymous2: _Anonymous2_e__Union;
  end;

  JET_SIGNATURE = packed record
    ulRandom: DWORD;
    logtimeCreate: JET_LOGTIME;
    szComputerName: array[0..15] of Shortint;
  end;

  JET_LGPOS = packed record
    ib: Word;
    isec: Word;
    lGeneration: Integer;
  end;

  JET_BKINFO = packed record
    lgposMark: JET_LGPOS;
    Anonymous: _Anonymous_e__Union;
    genLow: DWORD;
    genHigh: DWORD;
  end;

  JET_DBINFOMISC2 = record
    ulVersion: DWORD;
    ulUpdate: DWORD;
    signDb: JET_SIGNATURE;
    dbstate: DWORD;
    lgposConsistent: JET_LGPOS;
    logtimeConsistent: JET_LOGTIME;
    logtimeAttach: JET_LOGTIME;
    lgposAttach: JET_LGPOS;
    logtimeDetach: JET_LOGTIME;
    lgposDetach: JET_LGPOS;
    signLog: JET_SIGNATURE;
    bkinfoFullPrev: JET_BKINFO;
    bkinfoIncPrev: JET_BKINFO;
    bkinfoFullCur: JET_BKINFO;
    fShadowingDisabled: DWORD;
    fUpgradeDb: DWORD;
    dwMajorVersion: DWORD;
    dwMinorVersion: DWORD;
    dwBuildNumber: DWORD;
    lSPNumber: Integer;
    cbPageSize: DWORD;
    genMinRequired: DWORD;
    genMaxRequired: DWORD;
    logtimeGenMaxCreate: JET_LOGTIME;
    ulRepairCount: DWORD;
    logtimeRepair: JET_LOGTIME;
    ulRepairCountOld: DWORD;
    ulECCFixSuccess: DWORD;
    logtimeECCFixSuccess: JET_LOGTIME;
    ulECCFixSuccessOld: DWORD;
    ulECCFixFail: DWORD;
    logtimeECCFixFail: JET_LOGTIME;
    ulECCFixFailOld: DWORD;
    ulBadChecksum: DWORD;
    logtimeBadChecksum: JET_LOGTIME;
    ulBadChecksumOld: DWORD;
  end;
const JET_LOGTIME = extern struct {
    bSeconds: i8,
    bMinutes: i8,
    bHours: i8,
    bDay: i8,
    bMonth: i8,
    bYear: i8,
    Anonymous1: _Anonymous1_e__Union,
    Anonymous2: _Anonymous2_e__Union,
};

const JET_SIGNATURE = extern struct {
    ulRandom: u32,
    logtimeCreate: JET_LOGTIME,
    szComputerName: [16]i8,
};

const JET_LGPOS = extern struct {
    ib: u16,
    isec: u16,
    lGeneration: i32,
};

const JET_BKINFO = extern struct {
    lgposMark: JET_LGPOS,
    Anonymous: _Anonymous_e__Union,
    genLow: u32,
    genHigh: u32,
};

const JET_DBINFOMISC2 = extern struct {
    ulVersion: u32,
    ulUpdate: u32,
    signDb: JET_SIGNATURE,
    dbstate: u32,
    lgposConsistent: JET_LGPOS,
    logtimeConsistent: JET_LOGTIME,
    logtimeAttach: JET_LOGTIME,
    lgposAttach: JET_LGPOS,
    logtimeDetach: JET_LOGTIME,
    lgposDetach: JET_LGPOS,
    signLog: JET_SIGNATURE,
    bkinfoFullPrev: JET_BKINFO,
    bkinfoIncPrev: JET_BKINFO,
    bkinfoFullCur: JET_BKINFO,
    fShadowingDisabled: u32,
    fUpgradeDb: u32,
    dwMajorVersion: u32,
    dwMinorVersion: u32,
    dwBuildNumber: u32,
    lSPNumber: i32,
    cbPageSize: u32,
    genMinRequired: u32,
    genMaxRequired: u32,
    logtimeGenMaxCreate: JET_LOGTIME,
    ulRepairCount: u32,
    logtimeRepair: JET_LOGTIME,
    ulRepairCountOld: u32,
    ulECCFixSuccess: u32,
    logtimeECCFixSuccess: JET_LOGTIME,
    ulECCFixSuccessOld: u32,
    ulECCFixFail: u32,
    logtimeECCFixFail: JET_LOGTIME,
    ulECCFixFailOld: u32,
    ulBadChecksum: u32,
    logtimeBadChecksum: JET_LOGTIME,
    ulBadChecksumOld: u32,
};
type
  JET_LOGTIME {.bycopy.} = object
    bSeconds: int8
    bMinutes: int8
    bHours: int8
    bDay: int8
    bMonth: int8
    bYear: int8
    Anonymous1: _Anonymous1_e__Union
    Anonymous2: _Anonymous2_e__Union

  JET_SIGNATURE {.packed.} = object
    ulRandom: uint32
    logtimeCreate: JET_LOGTIME
    szComputerName: array[16, int8]

  JET_LGPOS {.packed.} = object
    ib: uint16
    isec: uint16
    lGeneration: int32

  JET_BKINFO {.packed.} = object
    lgposMark: JET_LGPOS
    Anonymous: _Anonymous_e__Union
    genLow: uint32
    genHigh: uint32

  JET_DBINFOMISC2 {.bycopy.} = object
    ulVersion: uint32
    ulUpdate: uint32
    signDb: JET_SIGNATURE
    dbstate: uint32
    lgposConsistent: JET_LGPOS
    logtimeConsistent: JET_LOGTIME
    logtimeAttach: JET_LOGTIME
    lgposAttach: JET_LGPOS
    logtimeDetach: JET_LOGTIME
    lgposDetach: JET_LGPOS
    signLog: JET_SIGNATURE
    bkinfoFullPrev: JET_BKINFO
    bkinfoIncPrev: JET_BKINFO
    bkinfoFullCur: JET_BKINFO
    fShadowingDisabled: uint32
    fUpgradeDb: uint32
    dwMajorVersion: uint32
    dwMinorVersion: uint32
    dwBuildNumber: uint32
    lSPNumber: int32
    cbPageSize: uint32
    genMinRequired: uint32
    genMaxRequired: uint32
    logtimeGenMaxCreate: JET_LOGTIME
    ulRepairCount: uint32
    logtimeRepair: JET_LOGTIME
    ulRepairCountOld: uint32
    ulECCFixSuccess: uint32
    logtimeECCFixSuccess: JET_LOGTIME
    ulECCFixSuccessOld: uint32
    ulECCFixFail: uint32
    logtimeECCFixFail: JET_LOGTIME
    ulECCFixFailOld: uint32
    ulBadChecksum: uint32
    logtimeBadChecksum: JET_LOGTIME
    ulBadChecksumOld: uint32
struct JET_LOGTIME
{
    byte bSeconds;
    byte bMinutes;
    byte bHours;
    byte bDay;
    byte bMonth;
    byte bYear;
    _Anonymous1_e__Union Anonymous1;
    _Anonymous2_e__Union Anonymous2;
}

align(1)
struct JET_SIGNATURE
{
    uint ulRandom;
    JET_LOGTIME logtimeCreate;
    byte[16] szComputerName;
}

align(1)
struct JET_LGPOS
{
    ushort ib;
    ushort isec;
    int lGeneration;
}

align(1)
struct JET_BKINFO
{
    JET_LGPOS lgposMark;
    _Anonymous_e__Union Anonymous;
    uint genLow;
    uint genHigh;
}

struct JET_DBINFOMISC2
{
    uint ulVersion;
    uint ulUpdate;
    JET_SIGNATURE signDb;
    uint dbstate;
    JET_LGPOS lgposConsistent;
    JET_LOGTIME logtimeConsistent;
    JET_LOGTIME logtimeAttach;
    JET_LGPOS lgposAttach;
    JET_LOGTIME logtimeDetach;
    JET_LGPOS lgposDetach;
    JET_SIGNATURE signLog;
    JET_BKINFO bkinfoFullPrev;
    JET_BKINFO bkinfoIncPrev;
    JET_BKINFO bkinfoFullCur;
    uint fShadowingDisabled;
    uint fUpgradeDb;
    uint dwMajorVersion;
    uint dwMinorVersion;
    uint dwBuildNumber;
    int lSPNumber;
    uint cbPageSize;
    uint genMinRequired;
    uint genMaxRequired;
    JET_LOGTIME logtimeGenMaxCreate;
    uint ulRepairCount;
    JET_LOGTIME logtimeRepair;
    uint ulRepairCountOld;
    uint ulECCFixSuccess;
    JET_LOGTIME logtimeECCFixSuccess;
    uint ulECCFixSuccessOld;
    uint ulECCFixFail;
    JET_LOGTIME logtimeECCFixFail;
    uint ulECCFixFailOld;
    uint ulBadChecksum;
    JET_LOGTIME logtimeBadChecksum;
    uint ulBadChecksumOld;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; JET_DBINFOMISC2 サイズ: 400 バイト(x86)
dim st, 100    ; 4byte整数×100(構造体サイズ 400 / 4 切り上げ)
; ulVersion : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; ulUpdate : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; signDb : JET_SIGNATURE (+8, 36byte)  varptr(st)+8 を基点に操作(36byte:入れ子/配列)
; dbstate : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; lgposConsistent : JET_LGPOS (+48, 8byte)  varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; logtimeConsistent : JET_LOGTIME (+56, 16byte)  varptr(st)+56 を基点に操作(16byte:入れ子/配列)
; logtimeAttach : JET_LOGTIME (+72, 16byte)  varptr(st)+72 を基点に操作(16byte:入れ子/配列)
; lgposAttach : JET_LGPOS (+88, 8byte)  varptr(st)+88 を基点に操作(8byte:入れ子/配列)
; logtimeDetach : JET_LOGTIME (+96, 16byte)  varptr(st)+96 を基点に操作(16byte:入れ子/配列)
; lgposDetach : JET_LGPOS (+112, 8byte)  varptr(st)+112 を基点に操作(8byte:入れ子/配列)
; signLog : JET_SIGNATURE (+120, 36byte)  varptr(st)+120 を基点に操作(36byte:入れ子/配列)
; bkinfoFullPrev : JET_BKINFO (+156, 32byte)  varptr(st)+156 を基点に操作(32byte:入れ子/配列)
; bkinfoIncPrev : JET_BKINFO (+188, 32byte)  varptr(st)+188 を基点に操作(32byte:入れ子/配列)
; bkinfoFullCur : JET_BKINFO (+220, 32byte)  varptr(st)+220 を基点に操作(32byte:入れ子/配列)
; fShadowingDisabled : DWORD (+252, 4byte)  st.63 = 値  /  値 = st.63   (lpoke/lpeek も可)
; fUpgradeDb : DWORD (+256, 4byte)  st.64 = 値  /  値 = st.64   (lpoke/lpeek も可)
; dwMajorVersion : DWORD (+260, 4byte)  st.65 = 値  /  値 = st.65   (lpoke/lpeek も可)
; dwMinorVersion : DWORD (+264, 4byte)  st.66 = 値  /  値 = st.66   (lpoke/lpeek も可)
; dwBuildNumber : DWORD (+268, 4byte)  st.67 = 値  /  値 = st.67   (lpoke/lpeek も可)
; lSPNumber : INT (+272, 4byte)  st.68 = 値  /  値 = st.68   (lpoke/lpeek も可)
; cbPageSize : DWORD (+276, 4byte)  st.69 = 値  /  値 = st.69   (lpoke/lpeek も可)
; genMinRequired : DWORD (+280, 4byte)  st.70 = 値  /  値 = st.70   (lpoke/lpeek も可)
; genMaxRequired : DWORD (+284, 4byte)  st.71 = 値  /  値 = st.71   (lpoke/lpeek も可)
; logtimeGenMaxCreate : JET_LOGTIME (+288, 16byte)  varptr(st)+288 を基点に操作(16byte:入れ子/配列)
; ulRepairCount : DWORD (+304, 4byte)  st.76 = 値  /  値 = st.76   (lpoke/lpeek も可)
; logtimeRepair : JET_LOGTIME (+308, 16byte)  varptr(st)+308 を基点に操作(16byte:入れ子/配列)
; ulRepairCountOld : DWORD (+324, 4byte)  st.81 = 値  /  値 = st.81   (lpoke/lpeek も可)
; ulECCFixSuccess : DWORD (+328, 4byte)  st.82 = 値  /  値 = st.82   (lpoke/lpeek も可)
; logtimeECCFixSuccess : JET_LOGTIME (+332, 16byte)  varptr(st)+332 を基点に操作(16byte:入れ子/配列)
; ulECCFixSuccessOld : DWORD (+348, 4byte)  st.87 = 値  /  値 = st.87   (lpoke/lpeek も可)
; ulECCFixFail : DWORD (+352, 4byte)  st.88 = 値  /  値 = st.88   (lpoke/lpeek も可)
; logtimeECCFixFail : JET_LOGTIME (+356, 16byte)  varptr(st)+356 を基点に操作(16byte:入れ子/配列)
; ulECCFixFailOld : DWORD (+372, 4byte)  st.93 = 値  /  値 = st.93   (lpoke/lpeek も可)
; ulBadChecksum : DWORD (+376, 4byte)  st.94 = 値  /  値 = st.94   (lpoke/lpeek も可)
; logtimeBadChecksum : JET_LOGTIME (+380, 16byte)  varptr(st)+380 を基点に操作(16byte:入れ子/配列)
; ulBadChecksumOld : DWORD (+396, 4byte)  st.99 = 値  /  値 = st.99   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; JET_DBINFOMISC2 サイズ: 512 バイト(x64)
dim st, 128    ; 4byte整数×128(構造体サイズ 512 / 4 切り上げ)
; ulVersion : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; ulUpdate : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; signDb : JET_SIGNATURE (+8, 44byte)  varptr(st)+8 を基点に操作(44byte:入れ子/配列)
; dbstate : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; lgposConsistent : JET_LGPOS (+56, 8byte)  varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; logtimeConsistent : JET_LOGTIME (+64, 24byte)  varptr(st)+64 を基点に操作(24byte:入れ子/配列)
; logtimeAttach : JET_LOGTIME (+88, 24byte)  varptr(st)+88 を基点に操作(24byte:入れ子/配列)
; lgposAttach : JET_LGPOS (+112, 8byte)  varptr(st)+112 を基点に操作(8byte:入れ子/配列)
; logtimeDetach : JET_LOGTIME (+120, 24byte)  varptr(st)+120 を基点に操作(24byte:入れ子/配列)
; lgposDetach : JET_LGPOS (+144, 8byte)  varptr(st)+144 を基点に操作(8byte:入れ子/配列)
; signLog : JET_SIGNATURE (+152, 44byte)  varptr(st)+152 を基点に操作(44byte:入れ子/配列)
; bkinfoFullPrev : JET_BKINFO (+196, 40byte)  varptr(st)+196 を基点に操作(40byte:入れ子/配列)
; bkinfoIncPrev : JET_BKINFO (+236, 40byte)  varptr(st)+236 を基点に操作(40byte:入れ子/配列)
; bkinfoFullCur : JET_BKINFO (+276, 40byte)  varptr(st)+276 を基点に操作(40byte:入れ子/配列)
; fShadowingDisabled : DWORD (+316, 4byte)  st.79 = 値  /  値 = st.79   (lpoke/lpeek も可)
; fUpgradeDb : DWORD (+320, 4byte)  st.80 = 値  /  値 = st.80   (lpoke/lpeek も可)
; dwMajorVersion : DWORD (+324, 4byte)  st.81 = 値  /  値 = st.81   (lpoke/lpeek も可)
; dwMinorVersion : DWORD (+328, 4byte)  st.82 = 値  /  値 = st.82   (lpoke/lpeek も可)
; dwBuildNumber : DWORD (+332, 4byte)  st.83 = 値  /  値 = st.83   (lpoke/lpeek も可)
; lSPNumber : INT (+336, 4byte)  st.84 = 値  /  値 = st.84   (lpoke/lpeek も可)
; cbPageSize : DWORD (+340, 4byte)  st.85 = 値  /  値 = st.85   (lpoke/lpeek も可)
; genMinRequired : DWORD (+344, 4byte)  st.86 = 値  /  値 = st.86   (lpoke/lpeek も可)
; genMaxRequired : DWORD (+348, 4byte)  st.87 = 値  /  値 = st.87   (lpoke/lpeek も可)
; logtimeGenMaxCreate : JET_LOGTIME (+352, 24byte)  varptr(st)+352 を基点に操作(24byte:入れ子/配列)
; ulRepairCount : DWORD (+376, 4byte)  st.94 = 値  /  値 = st.94   (lpoke/lpeek も可)
; logtimeRepair : JET_LOGTIME (+384, 24byte)  varptr(st)+384 を基点に操作(24byte:入れ子/配列)
; ulRepairCountOld : DWORD (+408, 4byte)  st.102 = 値  /  値 = st.102   (lpoke/lpeek も可)
; ulECCFixSuccess : DWORD (+412, 4byte)  st.103 = 値  /  値 = st.103   (lpoke/lpeek も可)
; logtimeECCFixSuccess : JET_LOGTIME (+416, 24byte)  varptr(st)+416 を基点に操作(24byte:入れ子/配列)
; ulECCFixSuccessOld : DWORD (+440, 4byte)  st.110 = 値  /  値 = st.110   (lpoke/lpeek も可)
; ulECCFixFail : DWORD (+444, 4byte)  st.111 = 値  /  値 = st.111   (lpoke/lpeek も可)
; logtimeECCFixFail : JET_LOGTIME (+448, 24byte)  varptr(st)+448 を基点に操作(24byte:入れ子/配列)
; ulECCFixFailOld : DWORD (+472, 4byte)  st.118 = 値  /  値 = st.118   (lpoke/lpeek も可)
; ulBadChecksum : DWORD (+476, 4byte)  st.119 = 値  /  値 = st.119   (lpoke/lpeek も可)
; logtimeBadChecksum : JET_LOGTIME (+480, 24byte)  varptr(st)+480 を基点に操作(24byte:入れ子/配列)
; ulBadChecksumOld : DWORD (+504, 4byte)  st.126 = 値  /  値 = st.126   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global JET_LOGTIME
    #field byte bSeconds
    #field byte bMinutes
    #field byte bHours
    #field byte bDay
    #field byte bMonth
    #field byte bYear
    #field byte Anonymous1 8
    #field byte Anonymous2 8
#endstruct

#defstruct global JET_SIGNATURE, pack=1
    #field int ulRandom
    #field JET_LOGTIME logtimeCreate
    #field char szComputerName 16
#endstruct

#defstruct global JET_LGPOS, pack=1
    #field short ib
    #field short isec
    #field int lGeneration
#endstruct

#defstruct global JET_BKINFO, pack=1
    #field JET_LGPOS lgposMark
    #field byte Anonymous 24
    #field int genLow
    #field int genHigh
#endstruct

#defstruct global JET_DBINFOMISC2
    #field int ulVersion
    #field int ulUpdate
    #field JET_SIGNATURE signDb
    #field int dbstate
    #field JET_LGPOS lgposConsistent
    #field JET_LOGTIME logtimeConsistent
    #field JET_LOGTIME logtimeAttach
    #field JET_LGPOS lgposAttach
    #field JET_LOGTIME logtimeDetach
    #field JET_LGPOS lgposDetach
    #field JET_SIGNATURE signLog
    #field JET_BKINFO bkinfoFullPrev
    #field JET_BKINFO bkinfoIncPrev
    #field JET_BKINFO bkinfoFullCur
    #field int fShadowingDisabled
    #field int fUpgradeDb
    #field int dwMajorVersion
    #field int dwMinorVersion
    #field int dwBuildNumber
    #field int lSPNumber
    #field int cbPageSize
    #field int genMinRequired
    #field int genMaxRequired
    #field JET_LOGTIME logtimeGenMaxCreate
    #field int ulRepairCount
    #field JET_LOGTIME logtimeRepair
    #field int ulRepairCountOld
    #field int ulECCFixSuccess
    #field JET_LOGTIME logtimeECCFixSuccess
    #field int ulECCFixSuccessOld
    #field int ulECCFixFail
    #field JET_LOGTIME logtimeECCFixFail
    #field int ulECCFixFailOld
    #field int ulBadChecksum
    #field JET_LOGTIME logtimeBadChecksum
    #field int ulBadChecksumOld
#endstruct

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