ホーム › Storage.FileSystem › CLS_INFORMATION
CLS_INFORMATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| TotalAvailable | LONGLONG | 8 | +0 | +0 | ログに割り当てられている使用可能な領域の合計 (バイト単位)。 このメンバーは、専用ログに割り当てられているすべてのコンテナーのサイズの合計です。 |
| CurrentAvailable | LONGLONG | 8 | +8 | +8 | 新しいレコードの追加および予約割り当てのためにログ内で使用可能な領域 (バイト単位)。 |
| TotalReservation | LONGLONG | 8 | +16 | +16 | ログ内で予約割り当てに充てられている領域の合計。 |
| BaseFileSize | ULONGLONG | 8 | +24 | +24 | ベースログのサイズ (バイト単位)。 |
| ContainerSize | ULONGLONG | 8 | +32 | +32 | コンテナーのサイズ (バイト単位)。 |
| TotalContainers | DWORD | 4 | +40 | +40 | 専用ログに関連付けられているアクティブなコンテナーの数。 |
| FreeContainers | DWORD | 4 | +44 | +44 | アクティブなログに含まれていないコンテナーの数。 |
| TotalClients | DWORD | 4 | +48 | +48 | 物理ログ内でアクティブなログストリームの数。 |
| Attributes | DWORD | 4 | +52 | +52 | ログの作成時に CreateLogFile の fFlagsAndAttributes パラメーターによって設定されるログ属性。 |
| FlushThreshold | DWORD | 4 | +56 | +56 | 共通ログファイルシステム (CLFS) がデータをディスクへ自動的に書き込むまでに、内部フラッシュキュー上で保留状態のままにできるデータのバイト数。 |
| SectorSize | DWORD | 4 | +60 | +60 | 基になるディスクジオメトリのセクターサイズ (バイト単位)。 セクターサイズは 512 の倍数であり、すべてのログコンテナーで一貫しているものとみなされます。 |
| MinArchiveTailLsn | CLS_LSN | 8 | +64 | +64 | ログアーカイブテールのログシーケンス番号 (LSN)。 |
| BaseLsn | CLS_LSN | 8 | +72 | +72 | ログのアクティブ領域の開始位置を示す LSN。 |
| LastFlushedLsn | CLS_LSN | 8 | +80 | +80 | LastFlushedLsn の値は、指定された値より小さい LSN がすべて既にディスクへフラッシュ済みであることを示します。 |
| LastLsn | CLS_LSN | 8 | +88 | +88 | LastLsn の値は、指定された値より小さい LSN がすべて既にログへ追加済みであることを示します。 |
| RestartLsn | CLS_LSN | 8 | +96 | +96 | 最後に書き込まれた再開レコードの LSN。 ログに再開領域がない場合、この LSN は CLFS_LSN_INVALID という値になります。 |
| Identity | GUID | 16 | +104 | +104 | ログの一意な識別子。 |
公式ドキュメント
ログに関する一般的な情報を記述します。GetLogFileInformation 関数は CLFS_INFORMATION 構造体を返します。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// CLS_LSN (x64 8 / x86 8 バイト)
typedef struct CLS_LSN {
ULONGLONG Internal;
} CLS_LSN;
// CLS_INFORMATION (x64 120 / x86 120 バイト)
typedef struct CLS_INFORMATION {
LONGLONG TotalAvailable;
LONGLONG CurrentAvailable;
LONGLONG TotalReservation;
ULONGLONG BaseFileSize;
ULONGLONG ContainerSize;
DWORD TotalContainers;
DWORD FreeContainers;
DWORD TotalClients;
DWORD Attributes;
DWORD FlushThreshold;
DWORD SectorSize;
CLS_LSN MinArchiveTailLsn;
CLS_LSN BaseLsn;
CLS_LSN LastFlushedLsn;
CLS_LSN LastLsn;
CLS_LSN RestartLsn;
GUID Identity;
} CLS_INFORMATION;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CLS_LSN
{
public ulong Internal;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CLS_INFORMATION
{
public long TotalAvailable;
public long CurrentAvailable;
public long TotalReservation;
public ulong BaseFileSize;
public ulong ContainerSize;
public uint TotalContainers;
public uint FreeContainers;
public uint TotalClients;
public uint Attributes;
public uint FlushThreshold;
public uint SectorSize;
public CLS_LSN MinArchiveTailLsn;
public CLS_LSN BaseLsn;
public CLS_LSN LastFlushedLsn;
public CLS_LSN LastLsn;
public CLS_LSN RestartLsn;
public Guid Identity;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CLS_LSN
Public Internal As ULong
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CLS_INFORMATION
Public TotalAvailable As Long
Public CurrentAvailable As Long
Public TotalReservation As Long
Public BaseFileSize As ULong
Public ContainerSize As ULong
Public TotalContainers As UInteger
Public FreeContainers As UInteger
Public TotalClients As UInteger
Public Attributes As UInteger
Public FlushThreshold As UInteger
Public SectorSize As UInteger
Public MinArchiveTailLsn As CLS_LSN
Public BaseLsn As CLS_LSN
Public LastFlushedLsn As CLS_LSN
Public LastLsn As CLS_LSN
Public RestartLsn As CLS_LSN
Public Identity As Guid
End Structureimport ctypes
from ctypes import wintypes
class CLS_LSN(ctypes.Structure):
_fields_ = [
("Internal", ctypes.c_ulonglong),
]
class CLS_INFORMATION(ctypes.Structure):
_fields_ = [
("TotalAvailable", ctypes.c_longlong),
("CurrentAvailable", ctypes.c_longlong),
("TotalReservation", ctypes.c_longlong),
("BaseFileSize", ctypes.c_ulonglong),
("ContainerSize", ctypes.c_ulonglong),
("TotalContainers", wintypes.DWORD),
("FreeContainers", wintypes.DWORD),
("TotalClients", wintypes.DWORD),
("Attributes", wintypes.DWORD),
("FlushThreshold", wintypes.DWORD),
("SectorSize", wintypes.DWORD),
("MinArchiveTailLsn", CLS_LSN),
("BaseLsn", CLS_LSN),
("LastFlushedLsn", CLS_LSN),
("LastLsn", CLS_LSN),
("RestartLsn", CLS_LSN),
("Identity", GUID),
]#[repr(C)]
pub struct CLS_LSN {
pub Internal: u64,
}
#[repr(C)]
pub struct CLS_INFORMATION {
pub TotalAvailable: i64,
pub CurrentAvailable: i64,
pub TotalReservation: i64,
pub BaseFileSize: u64,
pub ContainerSize: u64,
pub TotalContainers: u32,
pub FreeContainers: u32,
pub TotalClients: u32,
pub Attributes: u32,
pub FlushThreshold: u32,
pub SectorSize: u32,
pub MinArchiveTailLsn: CLS_LSN,
pub BaseLsn: CLS_LSN,
pub LastFlushedLsn: CLS_LSN,
pub LastLsn: CLS_LSN,
pub RestartLsn: CLS_LSN,
pub Identity: GUID,
}import "golang.org/x/sys/windows"
type CLS_LSN struct {
Internal uint64
}
type CLS_INFORMATION struct {
TotalAvailable int64
CurrentAvailable int64
TotalReservation int64
BaseFileSize uint64
ContainerSize uint64
TotalContainers uint32
FreeContainers uint32
TotalClients uint32
Attributes uint32
FlushThreshold uint32
SectorSize uint32
MinArchiveTailLsn CLS_LSN
BaseLsn CLS_LSN
LastFlushedLsn CLS_LSN
LastLsn CLS_LSN
RestartLsn CLS_LSN
Identity windows.GUID
}type
CLS_LSN = record
Internal: UInt64;
end;
CLS_INFORMATION = record
TotalAvailable: Int64;
CurrentAvailable: Int64;
TotalReservation: Int64;
BaseFileSize: UInt64;
ContainerSize: UInt64;
TotalContainers: DWORD;
FreeContainers: DWORD;
TotalClients: DWORD;
Attributes: DWORD;
FlushThreshold: DWORD;
SectorSize: DWORD;
MinArchiveTailLsn: CLS_LSN;
BaseLsn: CLS_LSN;
LastFlushedLsn: CLS_LSN;
LastLsn: CLS_LSN;
RestartLsn: CLS_LSN;
Identity: TGUID;
end;const CLS_LSN = extern struct {
Internal: u64,
};
const CLS_INFORMATION = extern struct {
TotalAvailable: i64,
CurrentAvailable: i64,
TotalReservation: i64,
BaseFileSize: u64,
ContainerSize: u64,
TotalContainers: u32,
FreeContainers: u32,
TotalClients: u32,
Attributes: u32,
FlushThreshold: u32,
SectorSize: u32,
MinArchiveTailLsn: CLS_LSN,
BaseLsn: CLS_LSN,
LastFlushedLsn: CLS_LSN,
LastLsn: CLS_LSN,
RestartLsn: CLS_LSN,
Identity: GUID,
};type
CLS_LSN {.bycopy.} = object
Internal: uint64
CLS_INFORMATION {.bycopy.} = object
TotalAvailable: int64
CurrentAvailable: int64
TotalReservation: int64
BaseFileSize: uint64
ContainerSize: uint64
TotalContainers: uint32
FreeContainers: uint32
TotalClients: uint32
Attributes: uint32
FlushThreshold: uint32
SectorSize: uint32
MinArchiveTailLsn: CLS_LSN
BaseLsn: CLS_LSN
LastFlushedLsn: CLS_LSN
LastLsn: CLS_LSN
RestartLsn: CLS_LSN
Identity: GUIDstruct CLS_LSN
{
ulong Internal;
}
struct CLS_INFORMATION
{
long TotalAvailable;
long CurrentAvailable;
long TotalReservation;
ulong BaseFileSize;
ulong ContainerSize;
uint TotalContainers;
uint FreeContainers;
uint TotalClients;
uint Attributes;
uint FlushThreshold;
uint SectorSize;
CLS_LSN MinArchiveTailLsn;
CLS_LSN BaseLsn;
CLS_LSN LastFlushedLsn;
CLS_LSN LastLsn;
CLS_LSN RestartLsn;
GUID Identity;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; CLS_INFORMATION サイズ: 120 バイト(x64)
dim st, 30 ; 4byte整数×30(構造体サイズ 120 / 4 切り上げ)
; TotalAvailable : LONGLONG (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; CurrentAvailable : LONGLONG (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; TotalReservation : LONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; BaseFileSize : ULONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; ContainerSize : ULONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; TotalContainers : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; FreeContainers : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; TotalClients : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; Attributes : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; FlushThreshold : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; SectorSize : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; MinArchiveTailLsn : CLS_LSN (+64, 8byte) varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; BaseLsn : CLS_LSN (+72, 8byte) varptr(st)+72 を基点に操作(8byte:入れ子/配列)
; LastFlushedLsn : CLS_LSN (+80, 8byte) varptr(st)+80 を基点に操作(8byte:入れ子/配列)
; LastLsn : CLS_LSN (+88, 8byte) varptr(st)+88 を基点に操作(8byte:入れ子/配列)
; RestartLsn : CLS_LSN (+96, 8byte) varptr(st)+96 を基点に操作(8byte:入れ子/配列)
; Identity : GUID (+104, 16byte) varptr(st)+104 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global CLS_LSN
#field int64 Internal
#endstruct
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global CLS_INFORMATION
#field int64 TotalAvailable
#field int64 CurrentAvailable
#field int64 TotalReservation
#field int64 BaseFileSize
#field int64 ContainerSize
#field int TotalContainers
#field int FreeContainers
#field int TotalClients
#field int Attributes
#field int FlushThreshold
#field int SectorSize
#field CLS_LSN MinArchiveTailLsn
#field CLS_LSN BaseLsn
#field CLS_LSN LastFlushedLsn
#field CLS_LSN LastLsn
#field CLS_LSN RestartLsn
#field GUID Identity
#endstruct
stdim st, CLS_INFORMATION ; NSTRUCT 変数を確保
st->TotalAvailable = 100
mes "TotalAvailable=" + st->TotalAvailable