ホーム › Storage.VirtualDiskService › VDS_POOL_ATTRIBUTES
VDS_POOL_ATTRIBUTES
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| ullAttributeMask | ULONGLONG | 8 | +0 | +0 | どの属性フィールドが有効かを示す64ビットビットマスク。 |
| raidType | VDS_RAID_TYPE | 4 | +8 | +8 | プールのRAID種別を示すVDS_RAID_TYPE列挙値。 |
| busType | VDS_STORAGE_BUS_TYPE | 4 | +12 | +12 | プールが対象とするバス種類を示すVDS_STORAGE_BUS_TYPE列挙値。 |
| pwszIntendedUsage | LPWSTR | 8/4 | +16 | +16 | プールの想定用途を表すワイド文字列。 |
| bSpinDown | BOOL | 4 | +24 | +20 | 未使用時にドライブをスピンダウンするか否かを示すBOOL値。 |
| bIsThinProvisioned | BOOL | 4 | +28 | +24 | シンプロビジョニングか否かを示すBOOL値。 |
| ullProvisionedSpace | ULONGLONG | 8 | +32 | +32 | プロビジョニング済み容量をバイト単位で示す。 |
| bNoSinglePointOfFailure | BOOL | 4 | +40 | +40 | 単一障害点を持たない構成か否かを示すBOOL値。 |
| ulDataRedundancyMax | DWORD | 4 | +44 | +44 | データ冗長度の最大値。 |
| ulDataRedundancyMin | DWORD | 4 | +48 | +48 | データ冗長度の最小値。 |
| ulDataRedundancyDefault | DWORD | 4 | +52 | +52 | データ冗長度の既定値。 |
| ulPackageRedundancyMax | DWORD | 4 | +56 | +56 | パッケージ冗長度の最大値。 |
| ulPackageRedundancyMin | DWORD | 4 | +60 | +60 | パッケージ冗長度の最小値。 |
| ulPackageRedundancyDefault | DWORD | 4 | +64 | +64 | パッケージ冗長度の既定値。 |
| ulStripeSize | DWORD | 4 | +68 | +68 | ストライプサイズをバイト単位で示す。 |
| ulStripeSizeMax | DWORD | 4 | +72 | +72 | ストライプサイズの最大値をバイト単位で示す。 |
| ulStripeSizeMin | DWORD | 4 | +76 | +76 | ストライプサイズの最小値をバイト単位で示す。 |
| ulDefaultStripeSize | DWORD | 4 | +80 | +80 | 既定のストライプサイズをバイト単位で示す。 |
| ulNumberOfColumns | DWORD | 4 | +84 | +84 | ストライプ列数。 |
| ulNumberOfColumnsMax | DWORD | 4 | +88 | +88 | ストライプ列数の最大値。 |
| ulNumberOfColumnsMin | DWORD | 4 | +92 | +92 | ストライプ列数の最小値。 |
| ulDefaultNumberofColumns | DWORD | 4 | +96 | +96 | 既定のストライプ列数。 |
| ulDataAvailabilityHint | DWORD | 4 | +100 | +100 | データ可用性に関するヒント値。 |
| ulAccessRandomnessHint | DWORD | 4 | +104 | +104 | アクセスのランダム性に関するヒント値。 |
| ulAccessDirectionHint | DWORD | 4 | +108 | +108 | アクセス方向(読み/書き)に関するヒント値。 |
| ulAccessSizeHint | DWORD | 4 | +112 | +112 | アクセスサイズに関するヒント値。 |
| ulAccessLatencyHint | DWORD | 4 | +116 | +116 | アクセス遅延に関するヒント値。 |
| ulAccessBandwidthWeightHint | DWORD | 4 | +120 | +120 | アクセス帯域幅の重み付けに関するヒント値。 |
| ulStorageCostHint | DWORD | 4 | +124 | +124 | ストレージコストに関するヒント値。 |
| ulStorageEfficiencyHint | DWORD | 4 | +128 | +128 | ストレージ効率に関するヒント値。 |
| ulNumOfCustomAttributes | DWORD | 4 | +132 | +132 | pPoolCustomAttributes 配列の要素数。 |
| pPoolCustomAttributes | VDS_POOL_CUSTOM_ATTRIBUTES* | 8/4 | +136 | +136 | カスタム属性配列(VDS_POOL_CUSTOM_ATTRIBUTES)へのポインター。 |
| bReserved1 | BOOL | 4 | +144 | +140 | 将来の拡張用に予約されたBOOL値。 |
| bReserved2 | BOOL | 4 | +148 | +144 | 将来の拡張用に予約されたBOOL値。 |
| ulReserved1 | DWORD | 4 | +152 | +148 | 将来の拡張用に予約された領域。 |
| ulReserved2 | DWORD | 4 | +156 | +152 | 将来の拡張用に予約された領域。 |
| ullReserved1 | ULONGLONG | 8 | +160 | +160 | 将来の拡張用に予約された64ビット領域。 |
| ullReserved2 | ULONGLONG | 8 | +168 | +168 | 将来の拡張用に予約された64ビット領域。 |
各言語での定義
#include <windows.h>
// VDS_POOL_ATTRIBUTES (x64 176 / x86 176 バイト)
typedef struct VDS_POOL_ATTRIBUTES {
ULONGLONG ullAttributeMask;
VDS_RAID_TYPE raidType;
VDS_STORAGE_BUS_TYPE busType;
LPWSTR pwszIntendedUsage;
BOOL bSpinDown;
BOOL bIsThinProvisioned;
ULONGLONG ullProvisionedSpace;
BOOL bNoSinglePointOfFailure;
DWORD ulDataRedundancyMax;
DWORD ulDataRedundancyMin;
DWORD ulDataRedundancyDefault;
DWORD ulPackageRedundancyMax;
DWORD ulPackageRedundancyMin;
DWORD ulPackageRedundancyDefault;
DWORD ulStripeSize;
DWORD ulStripeSizeMax;
DWORD ulStripeSizeMin;
DWORD ulDefaultStripeSize;
DWORD ulNumberOfColumns;
DWORD ulNumberOfColumnsMax;
DWORD ulNumberOfColumnsMin;
DWORD ulDefaultNumberofColumns;
DWORD ulDataAvailabilityHint;
DWORD ulAccessRandomnessHint;
DWORD ulAccessDirectionHint;
DWORD ulAccessSizeHint;
DWORD ulAccessLatencyHint;
DWORD ulAccessBandwidthWeightHint;
DWORD ulStorageCostHint;
DWORD ulStorageEfficiencyHint;
DWORD ulNumOfCustomAttributes;
VDS_POOL_CUSTOM_ATTRIBUTES* pPoolCustomAttributes;
BOOL bReserved1;
BOOL bReserved2;
DWORD ulReserved1;
DWORD ulReserved2;
ULONGLONG ullReserved1;
ULONGLONG ullReserved2;
} VDS_POOL_ATTRIBUTES;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct VDS_POOL_ATTRIBUTES
{
public ulong ullAttributeMask;
public int raidType;
public int busType;
public IntPtr pwszIntendedUsage;
[MarshalAs(UnmanagedType.Bool)] public bool bSpinDown;
[MarshalAs(UnmanagedType.Bool)] public bool bIsThinProvisioned;
public ulong ullProvisionedSpace;
[MarshalAs(UnmanagedType.Bool)] public bool bNoSinglePointOfFailure;
public uint ulDataRedundancyMax;
public uint ulDataRedundancyMin;
public uint ulDataRedundancyDefault;
public uint ulPackageRedundancyMax;
public uint ulPackageRedundancyMin;
public uint ulPackageRedundancyDefault;
public uint ulStripeSize;
public uint ulStripeSizeMax;
public uint ulStripeSizeMin;
public uint ulDefaultStripeSize;
public uint ulNumberOfColumns;
public uint ulNumberOfColumnsMax;
public uint ulNumberOfColumnsMin;
public uint ulDefaultNumberofColumns;
public uint ulDataAvailabilityHint;
public uint ulAccessRandomnessHint;
public uint ulAccessDirectionHint;
public uint ulAccessSizeHint;
public uint ulAccessLatencyHint;
public uint ulAccessBandwidthWeightHint;
public uint ulStorageCostHint;
public uint ulStorageEfficiencyHint;
public uint ulNumOfCustomAttributes;
public IntPtr pPoolCustomAttributes;
[MarshalAs(UnmanagedType.Bool)] public bool bReserved1;
[MarshalAs(UnmanagedType.Bool)] public bool bReserved2;
public uint ulReserved1;
public uint ulReserved2;
public ulong ullReserved1;
public ulong ullReserved2;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure VDS_POOL_ATTRIBUTES
Public ullAttributeMask As ULong
Public raidType As Integer
Public busType As Integer
Public pwszIntendedUsage As IntPtr
<MarshalAs(UnmanagedType.Bool)> Public bSpinDown As Boolean
<MarshalAs(UnmanagedType.Bool)> Public bIsThinProvisioned As Boolean
Public ullProvisionedSpace As ULong
<MarshalAs(UnmanagedType.Bool)> Public bNoSinglePointOfFailure As Boolean
Public ulDataRedundancyMax As UInteger
Public ulDataRedundancyMin As UInteger
Public ulDataRedundancyDefault As UInteger
Public ulPackageRedundancyMax As UInteger
Public ulPackageRedundancyMin As UInteger
Public ulPackageRedundancyDefault As UInteger
Public ulStripeSize As UInteger
Public ulStripeSizeMax As UInteger
Public ulStripeSizeMin As UInteger
Public ulDefaultStripeSize As UInteger
Public ulNumberOfColumns As UInteger
Public ulNumberOfColumnsMax As UInteger
Public ulNumberOfColumnsMin As UInteger
Public ulDefaultNumberofColumns As UInteger
Public ulDataAvailabilityHint As UInteger
Public ulAccessRandomnessHint As UInteger
Public ulAccessDirectionHint As UInteger
Public ulAccessSizeHint As UInteger
Public ulAccessLatencyHint As UInteger
Public ulAccessBandwidthWeightHint As UInteger
Public ulStorageCostHint As UInteger
Public ulStorageEfficiencyHint As UInteger
Public ulNumOfCustomAttributes As UInteger
Public pPoolCustomAttributes As IntPtr
<MarshalAs(UnmanagedType.Bool)> Public bReserved1 As Boolean
<MarshalAs(UnmanagedType.Bool)> Public bReserved2 As Boolean
Public ulReserved1 As UInteger
Public ulReserved2 As UInteger
Public ullReserved1 As ULong
Public ullReserved2 As ULong
End Structureimport ctypes
from ctypes import wintypes
class VDS_POOL_ATTRIBUTES(ctypes.Structure):
_fields_ = [
("ullAttributeMask", ctypes.c_ulonglong),
("raidType", ctypes.c_int),
("busType", ctypes.c_int),
("pwszIntendedUsage", ctypes.c_void_p),
("bSpinDown", wintypes.BOOL),
("bIsThinProvisioned", wintypes.BOOL),
("ullProvisionedSpace", ctypes.c_ulonglong),
("bNoSinglePointOfFailure", wintypes.BOOL),
("ulDataRedundancyMax", wintypes.DWORD),
("ulDataRedundancyMin", wintypes.DWORD),
("ulDataRedundancyDefault", wintypes.DWORD),
("ulPackageRedundancyMax", wintypes.DWORD),
("ulPackageRedundancyMin", wintypes.DWORD),
("ulPackageRedundancyDefault", wintypes.DWORD),
("ulStripeSize", wintypes.DWORD),
("ulStripeSizeMax", wintypes.DWORD),
("ulStripeSizeMin", wintypes.DWORD),
("ulDefaultStripeSize", wintypes.DWORD),
("ulNumberOfColumns", wintypes.DWORD),
("ulNumberOfColumnsMax", wintypes.DWORD),
("ulNumberOfColumnsMin", wintypes.DWORD),
("ulDefaultNumberofColumns", wintypes.DWORD),
("ulDataAvailabilityHint", wintypes.DWORD),
("ulAccessRandomnessHint", wintypes.DWORD),
("ulAccessDirectionHint", wintypes.DWORD),
("ulAccessSizeHint", wintypes.DWORD),
("ulAccessLatencyHint", wintypes.DWORD),
("ulAccessBandwidthWeightHint", wintypes.DWORD),
("ulStorageCostHint", wintypes.DWORD),
("ulStorageEfficiencyHint", wintypes.DWORD),
("ulNumOfCustomAttributes", wintypes.DWORD),
("pPoolCustomAttributes", ctypes.c_void_p),
("bReserved1", wintypes.BOOL),
("bReserved2", wintypes.BOOL),
("ulReserved1", wintypes.DWORD),
("ulReserved2", wintypes.DWORD),
("ullReserved1", ctypes.c_ulonglong),
("ullReserved2", ctypes.c_ulonglong),
]#[repr(C)]
pub struct VDS_POOL_ATTRIBUTES {
pub ullAttributeMask: u64,
pub raidType: i32,
pub busType: i32,
pub pwszIntendedUsage: *mut core::ffi::c_void,
pub bSpinDown: i32,
pub bIsThinProvisioned: i32,
pub ullProvisionedSpace: u64,
pub bNoSinglePointOfFailure: i32,
pub ulDataRedundancyMax: u32,
pub ulDataRedundancyMin: u32,
pub ulDataRedundancyDefault: u32,
pub ulPackageRedundancyMax: u32,
pub ulPackageRedundancyMin: u32,
pub ulPackageRedundancyDefault: u32,
pub ulStripeSize: u32,
pub ulStripeSizeMax: u32,
pub ulStripeSizeMin: u32,
pub ulDefaultStripeSize: u32,
pub ulNumberOfColumns: u32,
pub ulNumberOfColumnsMax: u32,
pub ulNumberOfColumnsMin: u32,
pub ulDefaultNumberofColumns: u32,
pub ulDataAvailabilityHint: u32,
pub ulAccessRandomnessHint: u32,
pub ulAccessDirectionHint: u32,
pub ulAccessSizeHint: u32,
pub ulAccessLatencyHint: u32,
pub ulAccessBandwidthWeightHint: u32,
pub ulStorageCostHint: u32,
pub ulStorageEfficiencyHint: u32,
pub ulNumOfCustomAttributes: u32,
pub pPoolCustomAttributes: *mut core::ffi::c_void,
pub bReserved1: i32,
pub bReserved2: i32,
pub ulReserved1: u32,
pub ulReserved2: u32,
pub ullReserved1: u64,
pub ullReserved2: u64,
}import "golang.org/x/sys/windows"
type VDS_POOL_ATTRIBUTES struct {
ullAttributeMask uint64
raidType int32
busType int32
pwszIntendedUsage uintptr
bSpinDown int32
bIsThinProvisioned int32
ullProvisionedSpace uint64
bNoSinglePointOfFailure int32
ulDataRedundancyMax uint32
ulDataRedundancyMin uint32
ulDataRedundancyDefault uint32
ulPackageRedundancyMax uint32
ulPackageRedundancyMin uint32
ulPackageRedundancyDefault uint32
ulStripeSize uint32
ulStripeSizeMax uint32
ulStripeSizeMin uint32
ulDefaultStripeSize uint32
ulNumberOfColumns uint32
ulNumberOfColumnsMax uint32
ulNumberOfColumnsMin uint32
ulDefaultNumberofColumns uint32
ulDataAvailabilityHint uint32
ulAccessRandomnessHint uint32
ulAccessDirectionHint uint32
ulAccessSizeHint uint32
ulAccessLatencyHint uint32
ulAccessBandwidthWeightHint uint32
ulStorageCostHint uint32
ulStorageEfficiencyHint uint32
ulNumOfCustomAttributes uint32
pPoolCustomAttributes uintptr
bReserved1 int32
bReserved2 int32
ulReserved1 uint32
ulReserved2 uint32
ullReserved1 uint64
ullReserved2 uint64
}type
VDS_POOL_ATTRIBUTES = record
ullAttributeMask: UInt64;
raidType: Integer;
busType: Integer;
pwszIntendedUsage: Pointer;
bSpinDown: BOOL;
bIsThinProvisioned: BOOL;
ullProvisionedSpace: UInt64;
bNoSinglePointOfFailure: BOOL;
ulDataRedundancyMax: DWORD;
ulDataRedundancyMin: DWORD;
ulDataRedundancyDefault: DWORD;
ulPackageRedundancyMax: DWORD;
ulPackageRedundancyMin: DWORD;
ulPackageRedundancyDefault: DWORD;
ulStripeSize: DWORD;
ulStripeSizeMax: DWORD;
ulStripeSizeMin: DWORD;
ulDefaultStripeSize: DWORD;
ulNumberOfColumns: DWORD;
ulNumberOfColumnsMax: DWORD;
ulNumberOfColumnsMin: DWORD;
ulDefaultNumberofColumns: DWORD;
ulDataAvailabilityHint: DWORD;
ulAccessRandomnessHint: DWORD;
ulAccessDirectionHint: DWORD;
ulAccessSizeHint: DWORD;
ulAccessLatencyHint: DWORD;
ulAccessBandwidthWeightHint: DWORD;
ulStorageCostHint: DWORD;
ulStorageEfficiencyHint: DWORD;
ulNumOfCustomAttributes: DWORD;
pPoolCustomAttributes: Pointer;
bReserved1: BOOL;
bReserved2: BOOL;
ulReserved1: DWORD;
ulReserved2: DWORD;
ullReserved1: UInt64;
ullReserved2: UInt64;
end;const VDS_POOL_ATTRIBUTES = extern struct {
ullAttributeMask: u64,
raidType: i32,
busType: i32,
pwszIntendedUsage: ?*anyopaque,
bSpinDown: i32,
bIsThinProvisioned: i32,
ullProvisionedSpace: u64,
bNoSinglePointOfFailure: i32,
ulDataRedundancyMax: u32,
ulDataRedundancyMin: u32,
ulDataRedundancyDefault: u32,
ulPackageRedundancyMax: u32,
ulPackageRedundancyMin: u32,
ulPackageRedundancyDefault: u32,
ulStripeSize: u32,
ulStripeSizeMax: u32,
ulStripeSizeMin: u32,
ulDefaultStripeSize: u32,
ulNumberOfColumns: u32,
ulNumberOfColumnsMax: u32,
ulNumberOfColumnsMin: u32,
ulDefaultNumberofColumns: u32,
ulDataAvailabilityHint: u32,
ulAccessRandomnessHint: u32,
ulAccessDirectionHint: u32,
ulAccessSizeHint: u32,
ulAccessLatencyHint: u32,
ulAccessBandwidthWeightHint: u32,
ulStorageCostHint: u32,
ulStorageEfficiencyHint: u32,
ulNumOfCustomAttributes: u32,
pPoolCustomAttributes: ?*anyopaque,
bReserved1: i32,
bReserved2: i32,
ulReserved1: u32,
ulReserved2: u32,
ullReserved1: u64,
ullReserved2: u64,
};type
VDS_POOL_ATTRIBUTES {.bycopy.} = object
ullAttributeMask: uint64
raidType: int32
busType: int32
pwszIntendedUsage: pointer
bSpinDown: int32
bIsThinProvisioned: int32
ullProvisionedSpace: uint64
bNoSinglePointOfFailure: int32
ulDataRedundancyMax: uint32
ulDataRedundancyMin: uint32
ulDataRedundancyDefault: uint32
ulPackageRedundancyMax: uint32
ulPackageRedundancyMin: uint32
ulPackageRedundancyDefault: uint32
ulStripeSize: uint32
ulStripeSizeMax: uint32
ulStripeSizeMin: uint32
ulDefaultStripeSize: uint32
ulNumberOfColumns: uint32
ulNumberOfColumnsMax: uint32
ulNumberOfColumnsMin: uint32
ulDefaultNumberofColumns: uint32
ulDataAvailabilityHint: uint32
ulAccessRandomnessHint: uint32
ulAccessDirectionHint: uint32
ulAccessSizeHint: uint32
ulAccessLatencyHint: uint32
ulAccessBandwidthWeightHint: uint32
ulStorageCostHint: uint32
ulStorageEfficiencyHint: uint32
ulNumOfCustomAttributes: uint32
pPoolCustomAttributes: pointer
bReserved1: int32
bReserved2: int32
ulReserved1: uint32
ulReserved2: uint32
ullReserved1: uint64
ullReserved2: uint64struct VDS_POOL_ATTRIBUTES
{
ulong ullAttributeMask;
int raidType;
int busType;
void* pwszIntendedUsage;
int bSpinDown;
int bIsThinProvisioned;
ulong ullProvisionedSpace;
int bNoSinglePointOfFailure;
uint ulDataRedundancyMax;
uint ulDataRedundancyMin;
uint ulDataRedundancyDefault;
uint ulPackageRedundancyMax;
uint ulPackageRedundancyMin;
uint ulPackageRedundancyDefault;
uint ulStripeSize;
uint ulStripeSizeMax;
uint ulStripeSizeMin;
uint ulDefaultStripeSize;
uint ulNumberOfColumns;
uint ulNumberOfColumnsMax;
uint ulNumberOfColumnsMin;
uint ulDefaultNumberofColumns;
uint ulDataAvailabilityHint;
uint ulAccessRandomnessHint;
uint ulAccessDirectionHint;
uint ulAccessSizeHint;
uint ulAccessLatencyHint;
uint ulAccessBandwidthWeightHint;
uint ulStorageCostHint;
uint ulStorageEfficiencyHint;
uint ulNumOfCustomAttributes;
void* pPoolCustomAttributes;
int bReserved1;
int bReserved2;
uint ulReserved1;
uint ulReserved2;
ulong ullReserved1;
ulong ullReserved2;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; VDS_POOL_ATTRIBUTES サイズ: 176 バイト(x86)
dim st, 44 ; 4byte整数×44(構造体サイズ 176 / 4 切り上げ)
; ullAttributeMask : ULONGLONG (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; raidType : VDS_RAID_TYPE (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; busType : VDS_STORAGE_BUS_TYPE (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; pwszIntendedUsage : LPWSTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; bSpinDown : BOOL (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; bIsThinProvisioned : BOOL (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ullProvisionedSpace : ULONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; bNoSinglePointOfFailure : BOOL (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ulDataRedundancyMax : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; ulDataRedundancyMin : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ulDataRedundancyDefault : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ulPackageRedundancyMax : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; ulPackageRedundancyMin : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; ulPackageRedundancyDefault : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; ulStripeSize : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; ulStripeSizeMax : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; ulStripeSizeMin : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; ulDefaultStripeSize : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; ulNumberOfColumns : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; ulNumberOfColumnsMax : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; ulNumberOfColumnsMin : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; ulDefaultNumberofColumns : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; ulDataAvailabilityHint : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; ulAccessRandomnessHint : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; ulAccessDirectionHint : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; ulAccessSizeHint : DWORD (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; ulAccessLatencyHint : DWORD (+116, 4byte) st.29 = 値 / 値 = st.29 (lpoke/lpeek も可)
; ulAccessBandwidthWeightHint : DWORD (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; ulStorageCostHint : DWORD (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; ulStorageEfficiencyHint : DWORD (+128, 4byte) st.32 = 値 / 値 = st.32 (lpoke/lpeek も可)
; ulNumOfCustomAttributes : DWORD (+132, 4byte) st.33 = 値 / 値 = st.33 (lpoke/lpeek も可)
; pPoolCustomAttributes : VDS_POOL_CUSTOM_ATTRIBUTES* (+136, 4byte) varptr(st)+136 を基点に操作(4byte:入れ子/配列)
; bReserved1 : BOOL (+140, 4byte) st.35 = 値 / 値 = st.35 (lpoke/lpeek も可)
; bReserved2 : BOOL (+144, 4byte) st.36 = 値 / 値 = st.36 (lpoke/lpeek も可)
; ulReserved1 : DWORD (+148, 4byte) st.37 = 値 / 値 = st.37 (lpoke/lpeek も可)
; ulReserved2 : DWORD (+152, 4byte) st.38 = 値 / 値 = st.38 (lpoke/lpeek も可)
; ullReserved1 : ULONGLONG (+160, 8byte) qpoke st,160,値 / qpeek(st,160) ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; ullReserved2 : ULONGLONG (+168, 8byte) qpoke st,168,値 / qpeek(st,168) ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; VDS_POOL_ATTRIBUTES サイズ: 176 バイト(x64)
dim st, 44 ; 4byte整数×44(構造体サイズ 176 / 4 切り上げ)
; ullAttributeMask : ULONGLONG (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; raidType : VDS_RAID_TYPE (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; busType : VDS_STORAGE_BUS_TYPE (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; pwszIntendedUsage : LPWSTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; bSpinDown : BOOL (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; bIsThinProvisioned : BOOL (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; ullProvisionedSpace : ULONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; bNoSinglePointOfFailure : BOOL (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ulDataRedundancyMax : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; ulDataRedundancyMin : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ulDataRedundancyDefault : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ulPackageRedundancyMax : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; ulPackageRedundancyMin : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; ulPackageRedundancyDefault : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; ulStripeSize : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; ulStripeSizeMax : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; ulStripeSizeMin : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; ulDefaultStripeSize : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; ulNumberOfColumns : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; ulNumberOfColumnsMax : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; ulNumberOfColumnsMin : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; ulDefaultNumberofColumns : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; ulDataAvailabilityHint : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; ulAccessRandomnessHint : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; ulAccessDirectionHint : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; ulAccessSizeHint : DWORD (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; ulAccessLatencyHint : DWORD (+116, 4byte) st.29 = 値 / 値 = st.29 (lpoke/lpeek も可)
; ulAccessBandwidthWeightHint : DWORD (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; ulStorageCostHint : DWORD (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; ulStorageEfficiencyHint : DWORD (+128, 4byte) st.32 = 値 / 値 = st.32 (lpoke/lpeek も可)
; ulNumOfCustomAttributes : DWORD (+132, 4byte) st.33 = 値 / 値 = st.33 (lpoke/lpeek も可)
; pPoolCustomAttributes : VDS_POOL_CUSTOM_ATTRIBUTES* (+136, 8byte) varptr(st)+136 を基点に操作(8byte:入れ子/配列)
; bReserved1 : BOOL (+144, 4byte) st.36 = 値 / 値 = st.36 (lpoke/lpeek も可)
; bReserved2 : BOOL (+148, 4byte) st.37 = 値 / 値 = st.37 (lpoke/lpeek も可)
; ulReserved1 : DWORD (+152, 4byte) st.38 = 値 / 値 = st.38 (lpoke/lpeek も可)
; ulReserved2 : DWORD (+156, 4byte) st.39 = 値 / 値 = st.39 (lpoke/lpeek も可)
; ullReserved1 : ULONGLONG (+160, 8byte) qpoke st,160,値 / qpeek(st,160) ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; ullReserved2 : ULONGLONG (+168, 8byte) qpoke st,168,値 / qpeek(st,168) ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global VDS_POOL_ATTRIBUTES
#field int64 ullAttributeMask
#field int raidType
#field int busType
#field intptr pwszIntendedUsage
#field bool bSpinDown
#field bool bIsThinProvisioned
#field int64 ullProvisionedSpace
#field bool bNoSinglePointOfFailure
#field int ulDataRedundancyMax
#field int ulDataRedundancyMin
#field int ulDataRedundancyDefault
#field int ulPackageRedundancyMax
#field int ulPackageRedundancyMin
#field int ulPackageRedundancyDefault
#field int ulStripeSize
#field int ulStripeSizeMax
#field int ulStripeSizeMin
#field int ulDefaultStripeSize
#field int ulNumberOfColumns
#field int ulNumberOfColumnsMax
#field int ulNumberOfColumnsMin
#field int ulDefaultNumberofColumns
#field int ulDataAvailabilityHint
#field int ulAccessRandomnessHint
#field int ulAccessDirectionHint
#field int ulAccessSizeHint
#field int ulAccessLatencyHint
#field int ulAccessBandwidthWeightHint
#field int ulStorageCostHint
#field int ulStorageEfficiencyHint
#field int ulNumOfCustomAttributes
#field intptr pPoolCustomAttributes
#field bool bReserved1
#field bool bReserved2
#field int ulReserved1
#field int ulReserved2
#field int64 ullReserved1
#field int64 ullReserved2
#endstruct
stdim st, VDS_POOL_ATTRIBUTES ; NSTRUCT 変数を確保
st->ullAttributeMask = 100
mes "ullAttributeMask=" + st->ullAttributeMask