ホーム › 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 | この記憶域プールによって定義される、構造体内の属性を指定するマスクです。 有効な属性フラグの一覧は次のとおりです。各フラグは VDS_POOL_ATTRIBUTES 構造体のメンバーに対応します。未使用のビットは予約済みです。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| raidType | VDS_RAID_TYPE | 4 | +8 | +8 | 記憶域プールの RAID の種類を指定する VDS_RAID_TYPE 列挙型の値です。記憶域プールに特定の RAID の種類がない場合は、このメンバーに VDS_RT_UNKNOWN を設定し、ullAttributeMask メンバー内の VDS_POOL_ATTRIB_RAIDTYPE 属性フラグをクリアします。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| busType | VDS_STORAGE_BUS_TYPE | 4 | +12 | +12 | 記憶域プール内のドライブのバスの種類を指定する VDS_STORAGE_BUS_TYPE 列挙型の値です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pwszIntendedUsage | LPWSTR | 8/4 | +16 | +16 | 記憶域プールの用途を指定する文字列です。通常は、記憶域プールを使用しているアプリケーション (たとえば "SQL" や "Exchange")、または記憶域プールを使用している業務機能 (たとえば "Finance" や "Human Resources") を示します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bSpinDown | BOOL | 4 | +24 | +20 | 記憶域プール内のドライブが消費電力を抑えるために自動的にスピンダウンする場合は TRUE、それ以外の場合は FALSE です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bIsThinProvisioned | BOOL | 4 | +28 | +24 | 記憶域プールがシン プロビジョニングされている場合は TRUE、それ以外の場合は FALSE です。プールがシン プロビジョニングされている場合、プールの消費済み領域のバイト数は、プールのプロビジョニング済み領域のバイト数より小さくなることがあります。(プロビジョニング済み領域のバイト数は、この構造体の ullProvisionedSpace メンバーに格納されます。消費済み領域のバイト数は、VDS_STORAGE_POOL_PROP 構造体の ullTotalConsumedSpace メンバーに格納されます。) ハードウェア プロバイダーがこのメンバーに TRUE を設定する場合は、VDS_STORAGE_POOL_PROP 構造体の type メンバーにも VDS_SPT_CONCRETE を設定しなければなりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ullProvisionedSpace | ULONGLONG | 8 | +32 | +32 | プールがシン プロビジョニングされている場合、このメンバーはプールにプロビジョニングされている領域をバイト単位で指定します。このメンバーの値は、VDS_STORAGE_POOL_PROP 構造体の ullTotalConsumedSpace メンバーの値以上でなければなりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bNoSinglePointOfFailure | BOOL | 4 | +40 | +40 | プールに単一障害点が存在しない場合は TRUE、それ以外の場合は FALSE です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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 | データの可用性をどの程度重視するかを示すクライアントからのヒントです。値の範囲は 0 (重要ではない) から 10 (非常に重要) です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ulAccessRandomnessHint | DWORD | 4 | +104 | +104 | データ アクセスのランダム性を示すクライアントからのヒントです。値の範囲は 0 (完全にシーケンシャル) から 10 (完全にランダム) です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ulAccessDirectionHint | DWORD | 4 | +108 | +108 | データ アクセスの方向を示すクライアントからのヒントです。値の範囲は 0 (すべて読み取り) から 10 (すべて書き込み) です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ulAccessSizeHint | DWORD | 4 | +112 | +112 | 最適なアクセス サイズをメガバイト単位で示すクライアントからのヒントです。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ulAccessLatencyHint | DWORD | 4 | +116 | +116 | クライアントにとってのアクセス待ち時間の重要度を示すクライアントからのヒントです。値の範囲は 0 (重要ではない) から 10 (非常に重要) です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ulAccessBandwidthWeightHint | DWORD | 4 | +120 | +120 | 広い帯域幅の重要度を示すクライアントからのヒントです。値の範囲は 0 (重要ではない) から 10 (非常に重要) です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ulStorageCostHint | DWORD | 4 | +124 | +124 | クライアントにとってのストレージ コストの重要度を示すクライアントからのヒントです。値の範囲は 0 (重要ではない) から 10 (非常に重要) です。ストレージ コストがクライアントにとって非常に重要な場合、値 10 は、より低コストのストレージを使用してプールをプロビジョニングすることをクライアントが望んでいることを示します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ulStorageEfficiencyHint | DWORD | 4 | +128 | +128 | クライアントにとってのストレージ効率の重要度を示すクライアントからのヒントです。値の範囲は 0 (重要ではない) から 10 (非常に重要) です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ulNumOfCustomAttributes | DWORD | 4 | +132 | +132 | 記憶域プールに対して定義されているカスタム属性の数です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pPoolCustomAttributes | VDS_POOL_CUSTOM_ATTRIBUTES* | 8/4 | +136 | +136 | VDS_POOL_CUSTOM_ATTRIBUTES 構造体の配列です。各構造体には、記憶域プールに対して定義されたカスタム属性が 1 つ格納されます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bReserved1 | BOOL | 4 | +144 | +140 | このメンバーは将来の使用のために予約済みです。使用しないでください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bReserved2 | BOOL | 4 | +148 | +144 | このメンバーは将来の使用のために予約済みです。使用しないでください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ulReserved1 | DWORD | 4 | +152 | +148 | このメンバーは将来の使用のために予約済みです。使用しないでください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ulReserved2 | DWORD | 4 | +156 | +152 | このメンバーは将来の使用のために予約済みです。使用しないでください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ullReserved1 | ULONGLONG | 8 | +160 | +160 | このメンバーは将来の使用のために予約済みです。使用しないでください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ullReserved2 | ULONGLONG | 8 | +168 | +168 | このメンバーは将来の使用のために予約済みです。使用しないでください。 |
公式ドキュメント
[Windows 8 および Windows Server 2012 以降、Virtual Disk Service COM インターフェイスは Windows Storage Management API に置き換えられています。]
記憶域プールの属性を定義します。
解説(Remarks)
記憶域プールに属性が設定されている場合、その属性の設定はプールを構成するすべてのドライブ エクステントに適用されなければなりません。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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>
// 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