ホーム › Storage.Jet › JET_DBINFOMISC2
JET_DBINFOMISC2
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| ulVersion | DWORD | 4 | +0 | +0 | データベースエンジンのフォーマットバージョン番号。 |
| ulUpdate | DWORD | 4 | +4 | +4 | フォーマットの更新(マイナー)バージョン番号。 |
| signDb | JET_SIGNATURE | 44/36 | +8 | +8 | データベースを一意に識別する署名JET_SIGNATURE。 |
| dbstate | DWORD | 4 | +52 | +44 | データベースの状態を示す値。 |
| lgposConsistent | JET_LGPOS | 8 | +56 | +48 | 最後に整合状態となったログ位置JET_LGPOS。 |
| logtimeConsistent | JET_LOGTIME | 24/16 | +64 | +56 | 最後に整合状態となった時刻JET_LOGTIME。 |
| logtimeAttach | JET_LOGTIME | 24/16 | +88 | +72 | データベースがアタッチされた時刻JET_LOGTIME。 |
| lgposAttach | JET_LGPOS | 8 | +112 | +88 | アタッチ時のログ位置JET_LGPOS。 |
| logtimeDetach | JET_LOGTIME | 24/16 | +120 | +96 | データベースがデタッチされた時刻JET_LOGTIME。 |
| lgposDetach | JET_LGPOS | 8 | +144 | +112 | デタッチ時のログ位置JET_LGPOS。 |
| signLog | JET_SIGNATURE | 44/36 | +152 | +120 | 関連するログストリームの署名JET_SIGNATURE。 |
| bkinfoFullPrev | JET_BKINFO | 40/32 | +196 | +156 | 直前のフルバックアップ情報JET_BKINFO。 |
| bkinfoIncPrev | JET_BKINFO | 40/32 | +236 | +188 | 直前の増分バックアップ情報JET_BKINFO。 |
| bkinfoFullCur | JET_BKINFO | 40/32 | +276 | +220 | 進行中のフルバックアップ情報JET_BKINFO。 |
| fShadowingDisabled | DWORD | 4 | +316 | +252 | シャドウ(冗長コピー)が無効かを示すフラグ。 |
| fUpgradeDb | DWORD | 4 | +320 | +256 | アップグレードが必要かを示すフラグ。 |
| dwMajorVersion | DWORD | 4 | +324 | +260 | 作成したOSのメジャーバージョン番号。 |
| dwMinorVersion | DWORD | 4 | +328 | +264 | 作成したOSのマイナーバージョン番号。 |
| dwBuildNumber | DWORD | 4 | +332 | +268 | 作成したOSのビルド番号。 |
| lSPNumber | INT | 4 | +336 | +272 | 作成したOSのサービスパック番号。 |
| cbPageSize | DWORD | 4 | +340 | +276 | データベースのページサイズ(バイト)。 |
| genMinRequired | DWORD | 4 | +344 | +280 | リカバリに必要な最小ログ生成番号。 |
| genMaxRequired | DWORD | 4 | +348 | +284 | リカバリに必要な最大ログ生成番号。 |
| logtimeGenMaxCreate | JET_LOGTIME | 24/16 | +352 | +288 | 最大必要ログ生成が作成された時刻JET_LOGTIME。 |
| ulRepairCount | DWORD | 4 | +376 | +304 | 実行された修復操作の累計回数。 |
| logtimeRepair | JET_LOGTIME | 24/16 | +384 | +308 | 最後に修復が行われた時刻JET_LOGTIME。 |
| ulRepairCountOld | DWORD | 4 | +408 | +324 | 以前のフォーマットでの修復回数(履歴)。 |
| ulECCFixSuccess | DWORD | 4 | +412 | +328 | ECCで訂正に成功したページ数。 |
| logtimeECCFixSuccess | JET_LOGTIME | 24/16 | +416 | +332 | 最後にECC訂正に成功した時刻JET_LOGTIME。 |
| ulECCFixSuccessOld | DWORD | 4 | +440 | +348 | 以前のECC訂正成功回数(履歴)。 |
| ulECCFixFail | DWORD | 4 | +444 | +352 | ECC訂正に失敗したページ数。 |
| logtimeECCFixFail | JET_LOGTIME | 24/16 | +448 | +356 | 最後にECC訂正に失敗した時刻JET_LOGTIME。 |
| ulECCFixFailOld | DWORD | 4 | +472 | +372 | 以前のECC訂正失敗回数(履歴)。 |
| ulBadChecksum | DWORD | 4 | +476 | +376 | チェックサム不一致が検出された回数。 |
| logtimeBadChecksum | JET_LOGTIME | 24/16 | +480 | +380 | 最後にチェックサム不一致を検出した時刻JET_LOGTIME。 |
| ulBadChecksumOld | DWORD | 4 | +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 Structureimport 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: uint32struct 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