ホーム › Storage.Jet › JET_INDEXLIST
JET_INDEXLIST
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cbStruct | DWORD | 4 | +0 | +0 | この構造体のバイトサイズ。 |
| tableid | JET_TABLEID | 8/4 | +8 | +4 | インデックス一覧が格納された一時テーブルのテーブルID。 |
| cRecord | DWORD | 4 | +16 | +8 | 一時テーブル内のレコード数。 |
| columnidindexname | DWORD | 4 | +20 | +12 | インデックス名列の列IDを示す値。 |
| columnidgrbitIndex | DWORD | 4 | +24 | +16 | インデックスgrbit列の列IDを示す値。 |
| columnidcKey | DWORD | 4 | +28 | +20 | キー数列の列IDを示す値。 |
| columnidcEntry | DWORD | 4 | +32 | +24 | エントリ数列の列IDを示す値。 |
| columnidcPage | DWORD | 4 | +36 | +28 | ページ数列の列IDを示す値。 |
| columnidcColumn | DWORD | 4 | +40 | +32 | インデックス構成列数の列IDを示す値。 |
| columnidiColumn | DWORD | 4 | +44 | +36 | 列の序数(何番目のキー列か)を示す列IDを示す値。 |
| columnidcolumnid | DWORD | 4 | +48 | +40 | 構成列の列ID列の列IDを示す値。 |
| columnidcoltyp | DWORD | 4 | +52 | +44 | 構成列の型列の列IDを示す値。 |
| columnidCountry | DWORD | 4 | +56 | +48 | 国コード列の列IDを示す値。 |
| columnidLangid | DWORD | 4 | +60 | +52 | 言語ID列の列IDを示す値。 |
| columnidCp | DWORD | 4 | +64 | +56 | コードページ列の列IDを示す値。 |
| columnidCollate | DWORD | 4 | +68 | +60 | 照合順序列の列IDを示す値。 |
| columnidgrbitColumn | DWORD | 4 | +72 | +64 | 構成列grbit列の列IDを示す値。 |
| columnidcolumnname | DWORD | 4 | +76 | +68 | 構成列名列の列IDを示す値。 |
| columnidLCMapFlags | DWORD | 4 | +80 | +72 | LCMapStringのマッピングフラグ列の列IDを示す値。 |
各言語での定義
#include <windows.h>
// JET_INDEXLIST (x64 88 / x86 76 バイト)
typedef struct JET_INDEXLIST {
DWORD cbStruct;
JET_TABLEID tableid;
DWORD cRecord;
DWORD columnidindexname;
DWORD columnidgrbitIndex;
DWORD columnidcKey;
DWORD columnidcEntry;
DWORD columnidcPage;
DWORD columnidcColumn;
DWORD columnidiColumn;
DWORD columnidcolumnid;
DWORD columnidcoltyp;
DWORD columnidCountry;
DWORD columnidLangid;
DWORD columnidCp;
DWORD columnidCollate;
DWORD columnidgrbitColumn;
DWORD columnidcolumnname;
DWORD columnidLCMapFlags;
} JET_INDEXLIST;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct JET_INDEXLIST
{
public uint cbStruct;
public UIntPtr tableid;
public uint cRecord;
public uint columnidindexname;
public uint columnidgrbitIndex;
public uint columnidcKey;
public uint columnidcEntry;
public uint columnidcPage;
public uint columnidcColumn;
public uint columnidiColumn;
public uint columnidcolumnid;
public uint columnidcoltyp;
public uint columnidCountry;
public uint columnidLangid;
public uint columnidCp;
public uint columnidCollate;
public uint columnidgrbitColumn;
public uint columnidcolumnname;
public uint columnidLCMapFlags;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure JET_INDEXLIST
Public cbStruct As UInteger
Public tableid As UIntPtr
Public cRecord As UInteger
Public columnidindexname As UInteger
Public columnidgrbitIndex As UInteger
Public columnidcKey As UInteger
Public columnidcEntry As UInteger
Public columnidcPage As UInteger
Public columnidcColumn As UInteger
Public columnidiColumn As UInteger
Public columnidcolumnid As UInteger
Public columnidcoltyp As UInteger
Public columnidCountry As UInteger
Public columnidLangid As UInteger
Public columnidCp As UInteger
Public columnidCollate As UInteger
Public columnidgrbitColumn As UInteger
Public columnidcolumnname As UInteger
Public columnidLCMapFlags As UInteger
End Structureimport ctypes
from ctypes import wintypes
class JET_INDEXLIST(ctypes.Structure):
_fields_ = [
("cbStruct", wintypes.DWORD),
("tableid", ctypes.c_size_t),
("cRecord", wintypes.DWORD),
("columnidindexname", wintypes.DWORD),
("columnidgrbitIndex", wintypes.DWORD),
("columnidcKey", wintypes.DWORD),
("columnidcEntry", wintypes.DWORD),
("columnidcPage", wintypes.DWORD),
("columnidcColumn", wintypes.DWORD),
("columnidiColumn", wintypes.DWORD),
("columnidcolumnid", wintypes.DWORD),
("columnidcoltyp", wintypes.DWORD),
("columnidCountry", wintypes.DWORD),
("columnidLangid", wintypes.DWORD),
("columnidCp", wintypes.DWORD),
("columnidCollate", wintypes.DWORD),
("columnidgrbitColumn", wintypes.DWORD),
("columnidcolumnname", wintypes.DWORD),
("columnidLCMapFlags", wintypes.DWORD),
]#[repr(C)]
pub struct JET_INDEXLIST {
pub cbStruct: u32,
pub tableid: usize,
pub cRecord: u32,
pub columnidindexname: u32,
pub columnidgrbitIndex: u32,
pub columnidcKey: u32,
pub columnidcEntry: u32,
pub columnidcPage: u32,
pub columnidcColumn: u32,
pub columnidiColumn: u32,
pub columnidcolumnid: u32,
pub columnidcoltyp: u32,
pub columnidCountry: u32,
pub columnidLangid: u32,
pub columnidCp: u32,
pub columnidCollate: u32,
pub columnidgrbitColumn: u32,
pub columnidcolumnname: u32,
pub columnidLCMapFlags: u32,
}import "golang.org/x/sys/windows"
type JET_INDEXLIST struct {
cbStruct uint32
tableid uintptr
cRecord uint32
columnidindexname uint32
columnidgrbitIndex uint32
columnidcKey uint32
columnidcEntry uint32
columnidcPage uint32
columnidcColumn uint32
columnidiColumn uint32
columnidcolumnid uint32
columnidcoltyp uint32
columnidCountry uint32
columnidLangid uint32
columnidCp uint32
columnidCollate uint32
columnidgrbitColumn uint32
columnidcolumnname uint32
columnidLCMapFlags uint32
}type
JET_INDEXLIST = record
cbStruct: DWORD;
tableid: NativeUInt;
cRecord: DWORD;
columnidindexname: DWORD;
columnidgrbitIndex: DWORD;
columnidcKey: DWORD;
columnidcEntry: DWORD;
columnidcPage: DWORD;
columnidcColumn: DWORD;
columnidiColumn: DWORD;
columnidcolumnid: DWORD;
columnidcoltyp: DWORD;
columnidCountry: DWORD;
columnidLangid: DWORD;
columnidCp: DWORD;
columnidCollate: DWORD;
columnidgrbitColumn: DWORD;
columnidcolumnname: DWORD;
columnidLCMapFlags: DWORD;
end;const JET_INDEXLIST = extern struct {
cbStruct: u32,
tableid: usize,
cRecord: u32,
columnidindexname: u32,
columnidgrbitIndex: u32,
columnidcKey: u32,
columnidcEntry: u32,
columnidcPage: u32,
columnidcColumn: u32,
columnidiColumn: u32,
columnidcolumnid: u32,
columnidcoltyp: u32,
columnidCountry: u32,
columnidLangid: u32,
columnidCp: u32,
columnidCollate: u32,
columnidgrbitColumn: u32,
columnidcolumnname: u32,
columnidLCMapFlags: u32,
};type
JET_INDEXLIST {.bycopy.} = object
cbStruct: uint32
tableid: uint
cRecord: uint32
columnidindexname: uint32
columnidgrbitIndex: uint32
columnidcKey: uint32
columnidcEntry: uint32
columnidcPage: uint32
columnidcColumn: uint32
columnidiColumn: uint32
columnidcolumnid: uint32
columnidcoltyp: uint32
columnidCountry: uint32
columnidLangid: uint32
columnidCp: uint32
columnidCollate: uint32
columnidgrbitColumn: uint32
columnidcolumnname: uint32
columnidLCMapFlags: uint32struct JET_INDEXLIST
{
uint cbStruct;
size_t tableid;
uint cRecord;
uint columnidindexname;
uint columnidgrbitIndex;
uint columnidcKey;
uint columnidcEntry;
uint columnidcPage;
uint columnidcColumn;
uint columnidiColumn;
uint columnidcolumnid;
uint columnidcoltyp;
uint columnidCountry;
uint columnidLangid;
uint columnidCp;
uint columnidCollate;
uint columnidgrbitColumn;
uint columnidcolumnname;
uint columnidLCMapFlags;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; JET_INDEXLIST サイズ: 76 バイト(x86)
dim st, 19 ; 4byte整数×19(構造体サイズ 76 / 4 切り上げ)
; cbStruct : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; tableid : JET_TABLEID (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; cRecord : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; columnidindexname : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; columnidgrbitIndex : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; columnidcKey : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; columnidcEntry : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; columnidcPage : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; columnidcColumn : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; columnidiColumn : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; columnidcolumnid : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; columnidcoltyp : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; columnidCountry : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; columnidLangid : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; columnidCp : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; columnidCollate : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; columnidgrbitColumn : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; columnidcolumnname : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; columnidLCMapFlags : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; JET_INDEXLIST サイズ: 88 バイト(x64)
dim st, 22 ; 4byte整数×22(構造体サイズ 88 / 4 切り上げ)
; cbStruct : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; tableid : JET_TABLEID (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; cRecord : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; columnidindexname : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; columnidgrbitIndex : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; columnidcKey : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; columnidcEntry : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; columnidcPage : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; columnidcColumn : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; columnidiColumn : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; columnidcolumnid : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; columnidcoltyp : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; columnidCountry : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; columnidLangid : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; columnidCp : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; columnidCollate : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; columnidgrbitColumn : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; columnidcolumnname : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; columnidLCMapFlags : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global JET_INDEXLIST
#field int cbStruct
#field intptr tableid
#field int cRecord
#field int columnidindexname
#field int columnidgrbitIndex
#field int columnidcKey
#field int columnidcEntry
#field int columnidcPage
#field int columnidcColumn
#field int columnidiColumn
#field int columnidcolumnid
#field int columnidcoltyp
#field int columnidCountry
#field int columnidLangid
#field int columnidCp
#field int columnidCollate
#field int columnidgrbitColumn
#field int columnidcolumnname
#field int columnidLCMapFlags
#endstruct
stdim st, JET_INDEXLIST ; NSTRUCT 変数を確保
st->cbStruct = 100
mes "cbStruct=" + st->cbStruct