ホーム › Storage.IndexServer › CI_STATE
CI_STATE
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cbStruct | DWORD | 4 | +0 | +0 | この構造体のバイトサイズ。 |
| cWordList | DWORD | 4 | +4 | +4 | 現在のワードリスト数。 |
| cPersistentIndex | DWORD | 4 | +8 | +8 | 永続インデックス(シャドウインデックス)の数。 |
| cQueries | DWORD | 4 | +12 | +12 | 実行中のクエリ数。 |
| cDocuments | DWORD | 4 | +16 | +16 | フィルタ処理待ちのドキュメント数。 |
| cFreshTest | DWORD | 4 | +20 | +20 | フレッシュテスト(最新性確認)対象の数。 |
| dwMergeProgress | DWORD | 4 | +24 | +24 | 進行中のマージ処理の進捗率(パーセント)。 |
| eState | DWORD | 4 | +28 | +28 | コンテンツインデックスの状態ビットマスク(CI_STATE_*)。 |
| cFilteredDocuments | DWORD | 4 | +32 | +32 | フィルタ処理が完了したドキュメント数。 |
| cTotalDocuments | DWORD | 4 | +36 | +36 | インデックス対象の総ドキュメント数。 |
| cPendingScans | DWORD | 4 | +40 | +40 | 保留中のスキャン数。 |
| dwIndexSize | DWORD | 4 | +44 | +44 | インデックスのサイズ(メガバイト)。 |
| cUniqueKeys | DWORD | 4 | +48 | +48 | インデックス内の一意キー数。 |
| cSecQDocuments | DWORD | 4 | +52 | +52 | セカンダリキューで処理中のドキュメント数。 |
| dwPropCacheSize | DWORD | 4 | +56 | +56 | プロパティキャッシュのサイズ(メガバイト)。 |
各言語での定義
#include <windows.h>
// CI_STATE (x64 60 / x86 60 バイト)
typedef struct CI_STATE {
DWORD cbStruct;
DWORD cWordList;
DWORD cPersistentIndex;
DWORD cQueries;
DWORD cDocuments;
DWORD cFreshTest;
DWORD dwMergeProgress;
DWORD eState;
DWORD cFilteredDocuments;
DWORD cTotalDocuments;
DWORD cPendingScans;
DWORD dwIndexSize;
DWORD cUniqueKeys;
DWORD cSecQDocuments;
DWORD dwPropCacheSize;
} CI_STATE;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CI_STATE
{
public uint cbStruct;
public uint cWordList;
public uint cPersistentIndex;
public uint cQueries;
public uint cDocuments;
public uint cFreshTest;
public uint dwMergeProgress;
public uint eState;
public uint cFilteredDocuments;
public uint cTotalDocuments;
public uint cPendingScans;
public uint dwIndexSize;
public uint cUniqueKeys;
public uint cSecQDocuments;
public uint dwPropCacheSize;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CI_STATE
Public cbStruct As UInteger
Public cWordList As UInteger
Public cPersistentIndex As UInteger
Public cQueries As UInteger
Public cDocuments As UInteger
Public cFreshTest As UInteger
Public dwMergeProgress As UInteger
Public eState As UInteger
Public cFilteredDocuments As UInteger
Public cTotalDocuments As UInteger
Public cPendingScans As UInteger
Public dwIndexSize As UInteger
Public cUniqueKeys As UInteger
Public cSecQDocuments As UInteger
Public dwPropCacheSize As UInteger
End Structureimport ctypes
from ctypes import wintypes
class CI_STATE(ctypes.Structure):
_fields_ = [
("cbStruct", wintypes.DWORD),
("cWordList", wintypes.DWORD),
("cPersistentIndex", wintypes.DWORD),
("cQueries", wintypes.DWORD),
("cDocuments", wintypes.DWORD),
("cFreshTest", wintypes.DWORD),
("dwMergeProgress", wintypes.DWORD),
("eState", wintypes.DWORD),
("cFilteredDocuments", wintypes.DWORD),
("cTotalDocuments", wintypes.DWORD),
("cPendingScans", wintypes.DWORD),
("dwIndexSize", wintypes.DWORD),
("cUniqueKeys", wintypes.DWORD),
("cSecQDocuments", wintypes.DWORD),
("dwPropCacheSize", wintypes.DWORD),
]#[repr(C)]
pub struct CI_STATE {
pub cbStruct: u32,
pub cWordList: u32,
pub cPersistentIndex: u32,
pub cQueries: u32,
pub cDocuments: u32,
pub cFreshTest: u32,
pub dwMergeProgress: u32,
pub eState: u32,
pub cFilteredDocuments: u32,
pub cTotalDocuments: u32,
pub cPendingScans: u32,
pub dwIndexSize: u32,
pub cUniqueKeys: u32,
pub cSecQDocuments: u32,
pub dwPropCacheSize: u32,
}import "golang.org/x/sys/windows"
type CI_STATE struct {
cbStruct uint32
cWordList uint32
cPersistentIndex uint32
cQueries uint32
cDocuments uint32
cFreshTest uint32
dwMergeProgress uint32
eState uint32
cFilteredDocuments uint32
cTotalDocuments uint32
cPendingScans uint32
dwIndexSize uint32
cUniqueKeys uint32
cSecQDocuments uint32
dwPropCacheSize uint32
}type
CI_STATE = record
cbStruct: DWORD;
cWordList: DWORD;
cPersistentIndex: DWORD;
cQueries: DWORD;
cDocuments: DWORD;
cFreshTest: DWORD;
dwMergeProgress: DWORD;
eState: DWORD;
cFilteredDocuments: DWORD;
cTotalDocuments: DWORD;
cPendingScans: DWORD;
dwIndexSize: DWORD;
cUniqueKeys: DWORD;
cSecQDocuments: DWORD;
dwPropCacheSize: DWORD;
end;const CI_STATE = extern struct {
cbStruct: u32,
cWordList: u32,
cPersistentIndex: u32,
cQueries: u32,
cDocuments: u32,
cFreshTest: u32,
dwMergeProgress: u32,
eState: u32,
cFilteredDocuments: u32,
cTotalDocuments: u32,
cPendingScans: u32,
dwIndexSize: u32,
cUniqueKeys: u32,
cSecQDocuments: u32,
dwPropCacheSize: u32,
};type
CI_STATE {.bycopy.} = object
cbStruct: uint32
cWordList: uint32
cPersistentIndex: uint32
cQueries: uint32
cDocuments: uint32
cFreshTest: uint32
dwMergeProgress: uint32
eState: uint32
cFilteredDocuments: uint32
cTotalDocuments: uint32
cPendingScans: uint32
dwIndexSize: uint32
cUniqueKeys: uint32
cSecQDocuments: uint32
dwPropCacheSize: uint32struct CI_STATE
{
uint cbStruct;
uint cWordList;
uint cPersistentIndex;
uint cQueries;
uint cDocuments;
uint cFreshTest;
uint dwMergeProgress;
uint eState;
uint cFilteredDocuments;
uint cTotalDocuments;
uint cPendingScans;
uint dwIndexSize;
uint cUniqueKeys;
uint cSecQDocuments;
uint dwPropCacheSize;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; CI_STATE サイズ: 60 バイト(x64)
dim st, 15 ; 4byte整数×15(構造体サイズ 60 / 4 切り上げ)
; cbStruct : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; cWordList : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; cPersistentIndex : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; cQueries : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; cDocuments : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; cFreshTest : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwMergeProgress : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; eState : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; cFilteredDocuments : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; cTotalDocuments : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; cPendingScans : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; dwIndexSize : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; cUniqueKeys : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; cSecQDocuments : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; dwPropCacheSize : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global CI_STATE
#field int cbStruct
#field int cWordList
#field int cPersistentIndex
#field int cQueries
#field int cDocuments
#field int cFreshTest
#field int dwMergeProgress
#field int eState
#field int cFilteredDocuments
#field int cTotalDocuments
#field int cPendingScans
#field int dwIndexSize
#field int cUniqueKeys
#field int cSecQDocuments
#field int dwPropCacheSize
#endstruct
stdim st, CI_STATE ; NSTRUCT 変数を確保
st->cbStruct = 100
mes "cbStruct=" + st->cbStruct