ホーム › Storage.FileSystem › CLS_IO_STATISTICS
CLS_IO_STATISTICS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| hdrIoStats | CLS_IO_STATISTICS_HEADER | 16 | +0 | +0 | I/O統計情報のヘッダ部。 |
| cFlush | ULONGLONG | 8 | +16 | +16 | フラッシュ操作の累計回数。 |
| cbFlush | ULONGLONG | 8 | +24 | +24 | フラッシュにより書き込まれた累計バイト数。 |
| cMetaFlush | ULONGLONG | 8 | +32 | +32 | メタデータフラッシュの累計回数。 |
| cbMetaFlush | ULONGLONG | 8 | +40 | +40 | メタデータフラッシュで書き込まれた累計バイト数。 |
各言語での定義
#include <windows.h>
// CLS_IO_STATISTICS_HEADER (x64 16 / x86 16 バイト)
typedef struct CLS_IO_STATISTICS_HEADER {
BYTE ubMajorVersion;
BYTE ubMinorVersion;
CLFS_IOSTATS_CLASS eStatsClass;
WORD cbLength;
DWORD coffData;
} CLS_IO_STATISTICS_HEADER;
// CLS_IO_STATISTICS (x64 48 / x86 48 バイト)
typedef struct CLS_IO_STATISTICS {
CLS_IO_STATISTICS_HEADER hdrIoStats;
ULONGLONG cFlush;
ULONGLONG cbFlush;
ULONGLONG cMetaFlush;
ULONGLONG cbMetaFlush;
} CLS_IO_STATISTICS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CLS_IO_STATISTICS_HEADER
{
public byte ubMajorVersion;
public byte ubMinorVersion;
public int eStatsClass;
public ushort cbLength;
public uint coffData;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CLS_IO_STATISTICS
{
public CLS_IO_STATISTICS_HEADER hdrIoStats;
public ulong cFlush;
public ulong cbFlush;
public ulong cMetaFlush;
public ulong cbMetaFlush;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CLS_IO_STATISTICS_HEADER
Public ubMajorVersion As Byte
Public ubMinorVersion As Byte
Public eStatsClass As Integer
Public cbLength As UShort
Public coffData As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CLS_IO_STATISTICS
Public hdrIoStats As CLS_IO_STATISTICS_HEADER
Public cFlush As ULong
Public cbFlush As ULong
Public cMetaFlush As ULong
Public cbMetaFlush As ULong
End Structureimport ctypes
from ctypes import wintypes
class CLS_IO_STATISTICS_HEADER(ctypes.Structure):
_fields_ = [
("ubMajorVersion", ctypes.c_ubyte),
("ubMinorVersion", ctypes.c_ubyte),
("eStatsClass", ctypes.c_int),
("cbLength", ctypes.c_ushort),
("coffData", wintypes.DWORD),
]
class CLS_IO_STATISTICS(ctypes.Structure):
_fields_ = [
("hdrIoStats", CLS_IO_STATISTICS_HEADER),
("cFlush", ctypes.c_ulonglong),
("cbFlush", ctypes.c_ulonglong),
("cMetaFlush", ctypes.c_ulonglong),
("cbMetaFlush", ctypes.c_ulonglong),
]#[repr(C)]
pub struct CLS_IO_STATISTICS_HEADER {
pub ubMajorVersion: u8,
pub ubMinorVersion: u8,
pub eStatsClass: i32,
pub cbLength: u16,
pub coffData: u32,
}
#[repr(C)]
pub struct CLS_IO_STATISTICS {
pub hdrIoStats: CLS_IO_STATISTICS_HEADER,
pub cFlush: u64,
pub cbFlush: u64,
pub cMetaFlush: u64,
pub cbMetaFlush: u64,
}import "golang.org/x/sys/windows"
type CLS_IO_STATISTICS_HEADER struct {
ubMajorVersion byte
ubMinorVersion byte
eStatsClass int32
cbLength uint16
coffData uint32
}
type CLS_IO_STATISTICS struct {
hdrIoStats CLS_IO_STATISTICS_HEADER
cFlush uint64
cbFlush uint64
cMetaFlush uint64
cbMetaFlush uint64
}type
CLS_IO_STATISTICS_HEADER = record
ubMajorVersion: Byte;
ubMinorVersion: Byte;
eStatsClass: Integer;
cbLength: Word;
coffData: DWORD;
end;
CLS_IO_STATISTICS = record
hdrIoStats: CLS_IO_STATISTICS_HEADER;
cFlush: UInt64;
cbFlush: UInt64;
cMetaFlush: UInt64;
cbMetaFlush: UInt64;
end;const CLS_IO_STATISTICS_HEADER = extern struct {
ubMajorVersion: u8,
ubMinorVersion: u8,
eStatsClass: i32,
cbLength: u16,
coffData: u32,
};
const CLS_IO_STATISTICS = extern struct {
hdrIoStats: CLS_IO_STATISTICS_HEADER,
cFlush: u64,
cbFlush: u64,
cMetaFlush: u64,
cbMetaFlush: u64,
};type
CLS_IO_STATISTICS_HEADER {.bycopy.} = object
ubMajorVersion: uint8
ubMinorVersion: uint8
eStatsClass: int32
cbLength: uint16
coffData: uint32
CLS_IO_STATISTICS {.bycopy.} = object
hdrIoStats: CLS_IO_STATISTICS_HEADER
cFlush: uint64
cbFlush: uint64
cMetaFlush: uint64
cbMetaFlush: uint64struct CLS_IO_STATISTICS_HEADER
{
ubyte ubMajorVersion;
ubyte ubMinorVersion;
int eStatsClass;
ushort cbLength;
uint coffData;
}
struct CLS_IO_STATISTICS
{
CLS_IO_STATISTICS_HEADER hdrIoStats;
ulong cFlush;
ulong cbFlush;
ulong cMetaFlush;
ulong cbMetaFlush;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; CLS_IO_STATISTICS サイズ: 48 バイト(x64)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; hdrIoStats : CLS_IO_STATISTICS_HEADER (+0, 16byte) varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; cFlush : ULONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; cbFlush : ULONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; cMetaFlush : ULONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; cbMetaFlush : ULONGLONG (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global CLS_IO_STATISTICS_HEADER
#field byte ubMajorVersion
#field byte ubMinorVersion
#field int eStatsClass
#field short cbLength
#field int coffData
#endstruct
#defstruct global CLS_IO_STATISTICS
#field CLS_IO_STATISTICS_HEADER hdrIoStats
#field int64 cFlush
#field int64 cbFlush
#field int64 cMetaFlush
#field int64 cbMetaFlush
#endstruct
stdim st, CLS_IO_STATISTICS ; NSTRUCT 変数を確保
st->cFlush = 100
mes "cFlush=" + st->cFlush