ホーム › System.Ioctl › SD_QUERY_STATS_OUTPUT
SD_QUERY_STATS_OUTPUT
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| SdsStreamSize | ULONGLONG | 8 | +0 | +0 | $SDS(セキュリティ記述子)ストリームのサイズ(バイト)。 |
| SdsAllocationSize | ULONGLONG | 8 | +8 | +8 | $SDSストリームの割り当てサイズ(バイト)。 |
| SiiStreamSize | ULONGLONG | 8 | +16 | +16 | $SII(IDインデックス)ストリームのサイズ(バイト)。 |
| SiiAllocationSize | ULONGLONG | 8 | +24 | +24 | $SIIストリームの割り当てサイズ(バイト)。 |
| SdhStreamSize | ULONGLONG | 8 | +32 | +32 | $SDH(ハッシュインデックス)ストリームのサイズ(バイト)。 |
| SdhAllocationSize | ULONGLONG | 8 | +40 | +40 | $SDHストリームの割り当てサイズ(バイト)。 |
| NumSDTotal | ULONGLONG | 8 | +48 | +48 | セキュリティ記述子の総数。 |
| NumSDUnused | ULONGLONG | 8 | +56 | +56 | 未使用のセキュリティ記述子の数。 |
各言語での定義
#include <windows.h>
// SD_QUERY_STATS_OUTPUT (x64 64 / x86 64 バイト)
typedef struct SD_QUERY_STATS_OUTPUT {
ULONGLONG SdsStreamSize;
ULONGLONG SdsAllocationSize;
ULONGLONG SiiStreamSize;
ULONGLONG SiiAllocationSize;
ULONGLONG SdhStreamSize;
ULONGLONG SdhAllocationSize;
ULONGLONG NumSDTotal;
ULONGLONG NumSDUnused;
} SD_QUERY_STATS_OUTPUT;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SD_QUERY_STATS_OUTPUT
{
public ulong SdsStreamSize;
public ulong SdsAllocationSize;
public ulong SiiStreamSize;
public ulong SiiAllocationSize;
public ulong SdhStreamSize;
public ulong SdhAllocationSize;
public ulong NumSDTotal;
public ulong NumSDUnused;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure SD_QUERY_STATS_OUTPUT
Public SdsStreamSize As ULong
Public SdsAllocationSize As ULong
Public SiiStreamSize As ULong
Public SiiAllocationSize As ULong
Public SdhStreamSize As ULong
Public SdhAllocationSize As ULong
Public NumSDTotal As ULong
Public NumSDUnused As ULong
End Structureimport ctypes
from ctypes import wintypes
class SD_QUERY_STATS_OUTPUT(ctypes.Structure):
_fields_ = [
("SdsStreamSize", ctypes.c_ulonglong),
("SdsAllocationSize", ctypes.c_ulonglong),
("SiiStreamSize", ctypes.c_ulonglong),
("SiiAllocationSize", ctypes.c_ulonglong),
("SdhStreamSize", ctypes.c_ulonglong),
("SdhAllocationSize", ctypes.c_ulonglong),
("NumSDTotal", ctypes.c_ulonglong),
("NumSDUnused", ctypes.c_ulonglong),
]#[repr(C)]
pub struct SD_QUERY_STATS_OUTPUT {
pub SdsStreamSize: u64,
pub SdsAllocationSize: u64,
pub SiiStreamSize: u64,
pub SiiAllocationSize: u64,
pub SdhStreamSize: u64,
pub SdhAllocationSize: u64,
pub NumSDTotal: u64,
pub NumSDUnused: u64,
}import "golang.org/x/sys/windows"
type SD_QUERY_STATS_OUTPUT struct {
SdsStreamSize uint64
SdsAllocationSize uint64
SiiStreamSize uint64
SiiAllocationSize uint64
SdhStreamSize uint64
SdhAllocationSize uint64
NumSDTotal uint64
NumSDUnused uint64
}type
SD_QUERY_STATS_OUTPUT = record
SdsStreamSize: UInt64;
SdsAllocationSize: UInt64;
SiiStreamSize: UInt64;
SiiAllocationSize: UInt64;
SdhStreamSize: UInt64;
SdhAllocationSize: UInt64;
NumSDTotal: UInt64;
NumSDUnused: UInt64;
end;const SD_QUERY_STATS_OUTPUT = extern struct {
SdsStreamSize: u64,
SdsAllocationSize: u64,
SiiStreamSize: u64,
SiiAllocationSize: u64,
SdhStreamSize: u64,
SdhAllocationSize: u64,
NumSDTotal: u64,
NumSDUnused: u64,
};type
SD_QUERY_STATS_OUTPUT {.bycopy.} = object
SdsStreamSize: uint64
SdsAllocationSize: uint64
SiiStreamSize: uint64
SiiAllocationSize: uint64
SdhStreamSize: uint64
SdhAllocationSize: uint64
NumSDTotal: uint64
NumSDUnused: uint64struct SD_QUERY_STATS_OUTPUT
{
ulong SdsStreamSize;
ulong SdsAllocationSize;
ulong SiiStreamSize;
ulong SiiAllocationSize;
ulong SdhStreamSize;
ulong SdhAllocationSize;
ulong NumSDTotal;
ulong NumSDUnused;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; SD_QUERY_STATS_OUTPUT サイズ: 64 バイト(x64)
dim st, 16 ; 4byte整数×16(構造体サイズ 64 / 4 切り上げ)
; SdsStreamSize : ULONGLONG (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; SdsAllocationSize : ULONGLONG (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; SiiStreamSize : ULONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; SiiAllocationSize : ULONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; SdhStreamSize : ULONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; SdhAllocationSize : ULONGLONG (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; NumSDTotal : ULONGLONG (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; NumSDUnused : ULONGLONG (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global SD_QUERY_STATS_OUTPUT
#field int64 SdsStreamSize
#field int64 SdsAllocationSize
#field int64 SiiStreamSize
#field int64 SiiAllocationSize
#field int64 SdhStreamSize
#field int64 SdhAllocationSize
#field int64 NumSDTotal
#field int64 NumSDUnused
#endstruct
stdim st, SD_QUERY_STATS_OUTPUT ; NSTRUCT 変数を確保
st->SdsStreamSize = 100
mes "SdsStreamSize=" + st->SdsStreamSize