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

JET_INDEXLIST

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

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

フィールド

フィールドサイズx64x86説明
cbStructDWORD4+0+0この構造体のバイトサイズ。
tableidJET_TABLEID8/4+8+4インデックス一覧が格納された一時テーブルのテーブルID。
cRecordDWORD4+16+8一時テーブル内のレコード数。
columnidindexnameDWORD4+20+12インデックス名列の列IDを示す値。
columnidgrbitIndexDWORD4+24+16インデックスgrbit列の列IDを示す値。
columnidcKeyDWORD4+28+20キー数列の列IDを示す値。
columnidcEntryDWORD4+32+24エントリ数列の列IDを示す値。
columnidcPageDWORD4+36+28ページ数列の列IDを示す値。
columnidcColumnDWORD4+40+32インデックス構成列数の列IDを示す値。
columnidiColumnDWORD4+44+36列の序数(何番目のキー列か)を示す列IDを示す値。
columnidcolumnidDWORD4+48+40構成列の列ID列の列IDを示す値。
columnidcoltypDWORD4+52+44構成列の型列の列IDを示す値。
columnidCountryDWORD4+56+48国コード列の列IDを示す値。
columnidLangidDWORD4+60+52言語ID列の列IDを示す値。
columnidCpDWORD4+64+56コードページ列の列IDを示す値。
columnidCollateDWORD4+68+60照合順序列の列IDを示す値。
columnidgrbitColumnDWORD4+72+64構成列grbit列の列IDを示す値。
columnidcolumnnameDWORD4+76+68構成列名列の列IDを示す値。
columnidLCMapFlagsDWORD4+80+72LCMapStringのマッピングフラグ列の列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 Structure
import 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: uint32
struct 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