Win32 API 日本語リファレンス
ホームStorage.VirtualDiskService › VDS_POOL_ATTRIBUTES

VDS_POOL_ATTRIBUTES

構造体
サイズx64: 176 バイト / x86: 176 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
ullAttributeMaskULONGLONG8+0+0どの属性フィールドが有効かを示す64ビットビットマスク。
raidTypeVDS_RAID_TYPE4+8+8プールのRAID種別を示すVDS_RAID_TYPE列挙値。
busTypeVDS_STORAGE_BUS_TYPE4+12+12プールが対象とするバス種類を示すVDS_STORAGE_BUS_TYPE列挙値。
pwszIntendedUsageLPWSTR8/4+16+16プールの想定用途を表すワイド文字列。
bSpinDownBOOL4+24+20未使用時にドライブをスピンダウンするか否かを示すBOOL値。
bIsThinProvisionedBOOL4+28+24シンプロビジョニングか否かを示すBOOL値。
ullProvisionedSpaceULONGLONG8+32+32プロビジョニング済み容量をバイト単位で示す。
bNoSinglePointOfFailureBOOL4+40+40単一障害点を持たない構成か否かを示すBOOL値。
ulDataRedundancyMaxDWORD4+44+44データ冗長度の最大値。
ulDataRedundancyMinDWORD4+48+48データ冗長度の最小値。
ulDataRedundancyDefaultDWORD4+52+52データ冗長度の既定値。
ulPackageRedundancyMaxDWORD4+56+56パッケージ冗長度の最大値。
ulPackageRedundancyMinDWORD4+60+60パッケージ冗長度の最小値。
ulPackageRedundancyDefaultDWORD4+64+64パッケージ冗長度の既定値。
ulStripeSizeDWORD4+68+68ストライプサイズをバイト単位で示す。
ulStripeSizeMaxDWORD4+72+72ストライプサイズの最大値をバイト単位で示す。
ulStripeSizeMinDWORD4+76+76ストライプサイズの最小値をバイト単位で示す。
ulDefaultStripeSizeDWORD4+80+80既定のストライプサイズをバイト単位で示す。
ulNumberOfColumnsDWORD4+84+84ストライプ列数。
ulNumberOfColumnsMaxDWORD4+88+88ストライプ列数の最大値。
ulNumberOfColumnsMinDWORD4+92+92ストライプ列数の最小値。
ulDefaultNumberofColumnsDWORD4+96+96既定のストライプ列数。
ulDataAvailabilityHintDWORD4+100+100データ可用性に関するヒント値。
ulAccessRandomnessHintDWORD4+104+104アクセスのランダム性に関するヒント値。
ulAccessDirectionHintDWORD4+108+108アクセス方向(読み/書き)に関するヒント値。
ulAccessSizeHintDWORD4+112+112アクセスサイズに関するヒント値。
ulAccessLatencyHintDWORD4+116+116アクセス遅延に関するヒント値。
ulAccessBandwidthWeightHintDWORD4+120+120アクセス帯域幅の重み付けに関するヒント値。
ulStorageCostHintDWORD4+124+124ストレージコストに関するヒント値。
ulStorageEfficiencyHintDWORD4+128+128ストレージ効率に関するヒント値。
ulNumOfCustomAttributesDWORD4+132+132pPoolCustomAttributes 配列の要素数。
pPoolCustomAttributesVDS_POOL_CUSTOM_ATTRIBUTES*8/4+136+136カスタム属性配列(VDS_POOL_CUSTOM_ATTRIBUTES)へのポインター。
bReserved1BOOL4+144+140将来の拡張用に予約されたBOOL値。
bReserved2BOOL4+148+144将来の拡張用に予約されたBOOL値。
ulReserved1DWORD4+152+148将来の拡張用に予約された領域。
ulReserved2DWORD4+156+152将来の拡張用に予約された領域。
ullReserved1ULONGLONG8+160+160将来の拡張用に予約された64ビット領域。
ullReserved2ULONGLONG8+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 Structure
import 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: uint64
struct 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