Win32 API 日本語リファレンス
ホームNetworking.Clustering › CLUSPROP_BUFFER_HELPER

CLUSPROP_BUFFER_HELPER

共用体
サイズx64: 8 バイト / x86: 4 バイト

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

フィールド

フィールドサイズx64x86説明
pbBYTE*8/4+0+0バッファをバイト列として参照するポインターである。
pwWORD*8/4+0+0バッファを16ビットワード列として参照するポインターである。
pdwDWORD*8/4+0+0バッファを32ビットDWORD列として参照するポインターである。
plINT*8/4+0+0バッファを符号付き整数列として参照するポインターである。
pszLPWSTR8/4+0+0バッファをワイド文字列として参照するポインターである。
pListCLUSPROP_LIST*8/4+0+0バッファをCLUSPROP_LIST(プロパティリスト)として参照するポインターである。
pSyntaxCLUSPROP_SYNTAX*8/4+0+0バッファをCLUSPROP_SYNTAX(構文値)として参照するポインターである。
pNameCLUSPROP_SZ*8/4+0+0バッファをCLUSPROP_SZ(プロパティ名)として参照するポインターである。
pValueCLUSPROP_VALUE*8/4+0+0バッファをCLUSPROP_VALUE(値ヘッダー)として参照するポインターである。
pBinaryValueCLUSPROP_BINARY*8/4+0+0バッファをCLUSPROP_BINARY(バイナリ値)として参照するポインターである。
pWordValueCLUSPROP_WORD*8/4+0+0バッファをCLUSPROP_WORD(WORD値)として参照するポインターである。
pDwordValueCLUSPROP_DWORD*8/4+0+0バッファをCLUSPROP_DWORD(DWORD値)として参照するポインターである。
pLongValueCLUSPROP_LONG*8/4+0+0バッファをCLUSPROP_LONG(LONG値)として参照するポインターである。
pULargeIntegerValueCLUSPROP_ULARGE_INTEGER*8/4+0+0バッファをCLUSPROP_ULARGE_INTEGER(符号なし64ビット値)として参照するポインターである。
pLargeIntegerValueCLUSPROP_LARGE_INTEGER*8/4+0+0バッファをCLUSPROP_LARGE_INTEGER(符号付き64ビット値)として参照するポインターである。
pStringValueCLUSPROP_SZ*8/4+0+0バッファをCLUSPROP_SZ(文字列値)として参照するポインターである。
pMultiSzValueCLUSPROP_SZ*8/4+0+0バッファをマルチ文字列(CLUSPROP_SZ)として参照するポインターである。
pSecurityDescriptorCLUSPROP_SECURITY_DESCRIPTOR*8/4+0+0バッファをCLUSPROP_SECURITY_DESCRIPTOR(SD値)として参照するポインターである。
pResourceClassValueCLUSPROP_RESOURCE_CLASS*8/4+0+0バッファをCLUSPROP_RESOURCE_CLASS(リソースクラス値)として参照するポインターである。
pResourceClassInfoValueCLUSPROP_RESOURCE_CLASS_INFO*8/4+0+0バッファをCLUSPROP_RESOURCE_CLASS_INFO(リソースクラス情報)として参照するポインターである。
pDiskSignatureValueCLUSPROP_DWORD*8/4+0+0バッファをディスク署名のCLUSPROP_DWORD値として参照するポインターである。
pScsiAddressValueCLUSPROP_SCSI_ADDRESS*8/4+0+0バッファをCLUSPROP_SCSI_ADDRESS(SCSIアドレス値)として参照するポインターである。
pDiskNumberValueCLUSPROP_DWORD*8/4+0+0バッファをディスク番号のCLUSPROP_DWORD値として参照するポインターである。
pPartitionInfoValueCLUSPROP_PARTITION_INFO*8/4+0+0バッファをCLUSPROP_PARTITION_INFO(パーティション情報)として参照するポインターである。
pRequiredDependencyValueCLUSPROP_REQUIRED_DEPENDENCY*8/4+0+0バッファをCLUSPROP_REQUIRED_DEPENDENCY(必須依存関係)として参照するポインターである。
pPartitionInfoValueExCLUSPROP_PARTITION_INFO_EX*8/4+0+0バッファをCLUSPROP_PARTITION_INFO_EX(拡張パーティション情報)として参照するポインターである。
pPartitionInfoValueEx2CLUSPROP_PARTITION_INFO_EX2*8/4+0+0バッファをCLUSPROP_PARTITION_INFO_EX2(拡張パーティション情報2)として参照するポインターである。
pFileTimeValueCLUSPROP_FILETIME*8/4+0+0バッファをCLUSPROP_FILETIME(日時値)として参照するポインターである。

各言語での定義

#include <windows.h>

// CLUSPROP_BUFFER_HELPER  (x64 8 / x86 4 バイト)
typedef struct CLUSPROP_BUFFER_HELPER {
    BYTE* pb;
    WORD* pw;
    DWORD* pdw;
    INT* pl;
    LPWSTR psz;
    CLUSPROP_LIST* pList;
    CLUSPROP_SYNTAX* pSyntax;
    CLUSPROP_SZ* pName;
    CLUSPROP_VALUE* pValue;
    CLUSPROP_BINARY* pBinaryValue;
    CLUSPROP_WORD* pWordValue;
    CLUSPROP_DWORD* pDwordValue;
    CLUSPROP_LONG* pLongValue;
    CLUSPROP_ULARGE_INTEGER* pULargeIntegerValue;
    CLUSPROP_LARGE_INTEGER* pLargeIntegerValue;
    CLUSPROP_SZ* pStringValue;
    CLUSPROP_SZ* pMultiSzValue;
    CLUSPROP_SECURITY_DESCRIPTOR* pSecurityDescriptor;
    CLUSPROP_RESOURCE_CLASS* pResourceClassValue;
    CLUSPROP_RESOURCE_CLASS_INFO* pResourceClassInfoValue;
    CLUSPROP_DWORD* pDiskSignatureValue;
    CLUSPROP_SCSI_ADDRESS* pScsiAddressValue;
    CLUSPROP_DWORD* pDiskNumberValue;
    CLUSPROP_PARTITION_INFO* pPartitionInfoValue;
    CLUSPROP_REQUIRED_DEPENDENCY* pRequiredDependencyValue;
    CLUSPROP_PARTITION_INFO_EX* pPartitionInfoValueEx;
    CLUSPROP_PARTITION_INFO_EX2* pPartitionInfoValueEx2;
    CLUSPROP_FILETIME* pFileTimeValue;
} CLUSPROP_BUFFER_HELPER;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CLUSPROP_BUFFER_HELPER
{
    public IntPtr pb;
    public IntPtr pw;
    public IntPtr pdw;
    public IntPtr pl;
    public IntPtr psz;
    public IntPtr pList;
    public IntPtr pSyntax;
    public IntPtr pName;
    public IntPtr pValue;
    public IntPtr pBinaryValue;
    public IntPtr pWordValue;
    public IntPtr pDwordValue;
    public IntPtr pLongValue;
    public IntPtr pULargeIntegerValue;
    public IntPtr pLargeIntegerValue;
    public IntPtr pStringValue;
    public IntPtr pMultiSzValue;
    public IntPtr pSecurityDescriptor;
    public IntPtr pResourceClassValue;
    public IntPtr pResourceClassInfoValue;
    public IntPtr pDiskSignatureValue;
    public IntPtr pScsiAddressValue;
    public IntPtr pDiskNumberValue;
    public IntPtr pPartitionInfoValue;
    public IntPtr pRequiredDependencyValue;
    public IntPtr pPartitionInfoValueEx;
    public IntPtr pPartitionInfoValueEx2;
    public IntPtr pFileTimeValue;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CLUSPROP_BUFFER_HELPER
    Public pb As IntPtr
    Public pw As IntPtr
    Public pdw As IntPtr
    Public pl As IntPtr
    Public psz As IntPtr
    Public pList As IntPtr
    Public pSyntax As IntPtr
    Public pName As IntPtr
    Public pValue As IntPtr
    Public pBinaryValue As IntPtr
    Public pWordValue As IntPtr
    Public pDwordValue As IntPtr
    Public pLongValue As IntPtr
    Public pULargeIntegerValue As IntPtr
    Public pLargeIntegerValue As IntPtr
    Public pStringValue As IntPtr
    Public pMultiSzValue As IntPtr
    Public pSecurityDescriptor As IntPtr
    Public pResourceClassValue As IntPtr
    Public pResourceClassInfoValue As IntPtr
    Public pDiskSignatureValue As IntPtr
    Public pScsiAddressValue As IntPtr
    Public pDiskNumberValue As IntPtr
    Public pPartitionInfoValue As IntPtr
    Public pRequiredDependencyValue As IntPtr
    Public pPartitionInfoValueEx As IntPtr
    Public pPartitionInfoValueEx2 As IntPtr
    Public pFileTimeValue As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class CLUSPROP_BUFFER_HELPER(ctypes.Structure):
    _fields_ = [
        ("pb", ctypes.c_void_p),
        ("pw", ctypes.c_void_p),
        ("pdw", ctypes.c_void_p),
        ("pl", ctypes.c_void_p),
        ("psz", ctypes.c_void_p),
        ("pList", ctypes.c_void_p),
        ("pSyntax", ctypes.c_void_p),
        ("pName", ctypes.c_void_p),
        ("pValue", ctypes.c_void_p),
        ("pBinaryValue", ctypes.c_void_p),
        ("pWordValue", ctypes.c_void_p),
        ("pDwordValue", ctypes.c_void_p),
        ("pLongValue", ctypes.c_void_p),
        ("pULargeIntegerValue", ctypes.c_void_p),
        ("pLargeIntegerValue", ctypes.c_void_p),
        ("pStringValue", ctypes.c_void_p),
        ("pMultiSzValue", ctypes.c_void_p),
        ("pSecurityDescriptor", ctypes.c_void_p),
        ("pResourceClassValue", ctypes.c_void_p),
        ("pResourceClassInfoValue", ctypes.c_void_p),
        ("pDiskSignatureValue", ctypes.c_void_p),
        ("pScsiAddressValue", ctypes.c_void_p),
        ("pDiskNumberValue", ctypes.c_void_p),
        ("pPartitionInfoValue", ctypes.c_void_p),
        ("pRequiredDependencyValue", ctypes.c_void_p),
        ("pPartitionInfoValueEx", ctypes.c_void_p),
        ("pPartitionInfoValueEx2", ctypes.c_void_p),
        ("pFileTimeValue", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct CLUSPROP_BUFFER_HELPER {
    pub pb: *mut core::ffi::c_void,
    pub pw: *mut core::ffi::c_void,
    pub pdw: *mut core::ffi::c_void,
    pub pl: *mut core::ffi::c_void,
    pub psz: *mut core::ffi::c_void,
    pub pList: *mut core::ffi::c_void,
    pub pSyntax: *mut core::ffi::c_void,
    pub pName: *mut core::ffi::c_void,
    pub pValue: *mut core::ffi::c_void,
    pub pBinaryValue: *mut core::ffi::c_void,
    pub pWordValue: *mut core::ffi::c_void,
    pub pDwordValue: *mut core::ffi::c_void,
    pub pLongValue: *mut core::ffi::c_void,
    pub pULargeIntegerValue: *mut core::ffi::c_void,
    pub pLargeIntegerValue: *mut core::ffi::c_void,
    pub pStringValue: *mut core::ffi::c_void,
    pub pMultiSzValue: *mut core::ffi::c_void,
    pub pSecurityDescriptor: *mut core::ffi::c_void,
    pub pResourceClassValue: *mut core::ffi::c_void,
    pub pResourceClassInfoValue: *mut core::ffi::c_void,
    pub pDiskSignatureValue: *mut core::ffi::c_void,
    pub pScsiAddressValue: *mut core::ffi::c_void,
    pub pDiskNumberValue: *mut core::ffi::c_void,
    pub pPartitionInfoValue: *mut core::ffi::c_void,
    pub pRequiredDependencyValue: *mut core::ffi::c_void,
    pub pPartitionInfoValueEx: *mut core::ffi::c_void,
    pub pPartitionInfoValueEx2: *mut core::ffi::c_void,
    pub pFileTimeValue: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type CLUSPROP_BUFFER_HELPER struct {
	pb uintptr
	pw uintptr
	pdw uintptr
	pl uintptr
	psz uintptr
	pList uintptr
	pSyntax uintptr
	pName uintptr
	pValue uintptr
	pBinaryValue uintptr
	pWordValue uintptr
	pDwordValue uintptr
	pLongValue uintptr
	pULargeIntegerValue uintptr
	pLargeIntegerValue uintptr
	pStringValue uintptr
	pMultiSzValue uintptr
	pSecurityDescriptor uintptr
	pResourceClassValue uintptr
	pResourceClassInfoValue uintptr
	pDiskSignatureValue uintptr
	pScsiAddressValue uintptr
	pDiskNumberValue uintptr
	pPartitionInfoValue uintptr
	pRequiredDependencyValue uintptr
	pPartitionInfoValueEx uintptr
	pPartitionInfoValueEx2 uintptr
	pFileTimeValue uintptr
}
type
  CLUSPROP_BUFFER_HELPER = record
    pb: Pointer;
    pw: Pointer;
    pdw: Pointer;
    pl: Pointer;
    psz: Pointer;
    pList: Pointer;
    pSyntax: Pointer;
    pName: Pointer;
    pValue: Pointer;
    pBinaryValue: Pointer;
    pWordValue: Pointer;
    pDwordValue: Pointer;
    pLongValue: Pointer;
    pULargeIntegerValue: Pointer;
    pLargeIntegerValue: Pointer;
    pStringValue: Pointer;
    pMultiSzValue: Pointer;
    pSecurityDescriptor: Pointer;
    pResourceClassValue: Pointer;
    pResourceClassInfoValue: Pointer;
    pDiskSignatureValue: Pointer;
    pScsiAddressValue: Pointer;
    pDiskNumberValue: Pointer;
    pPartitionInfoValue: Pointer;
    pRequiredDependencyValue: Pointer;
    pPartitionInfoValueEx: Pointer;
    pPartitionInfoValueEx2: Pointer;
    pFileTimeValue: Pointer;
  end;
const CLUSPROP_BUFFER_HELPER = extern struct {
    pb: ?*anyopaque,
    pw: ?*anyopaque,
    pdw: ?*anyopaque,
    pl: ?*anyopaque,
    psz: ?*anyopaque,
    pList: ?*anyopaque,
    pSyntax: ?*anyopaque,
    pName: ?*anyopaque,
    pValue: ?*anyopaque,
    pBinaryValue: ?*anyopaque,
    pWordValue: ?*anyopaque,
    pDwordValue: ?*anyopaque,
    pLongValue: ?*anyopaque,
    pULargeIntegerValue: ?*anyopaque,
    pLargeIntegerValue: ?*anyopaque,
    pStringValue: ?*anyopaque,
    pMultiSzValue: ?*anyopaque,
    pSecurityDescriptor: ?*anyopaque,
    pResourceClassValue: ?*anyopaque,
    pResourceClassInfoValue: ?*anyopaque,
    pDiskSignatureValue: ?*anyopaque,
    pScsiAddressValue: ?*anyopaque,
    pDiskNumberValue: ?*anyopaque,
    pPartitionInfoValue: ?*anyopaque,
    pRequiredDependencyValue: ?*anyopaque,
    pPartitionInfoValueEx: ?*anyopaque,
    pPartitionInfoValueEx2: ?*anyopaque,
    pFileTimeValue: ?*anyopaque,
};
type
  CLUSPROP_BUFFER_HELPER {.bycopy.} = object
    pb: pointer
    pw: pointer
    pdw: pointer
    pl: pointer
    psz: pointer
    pList: pointer
    pSyntax: pointer
    pName: pointer
    pValue: pointer
    pBinaryValue: pointer
    pWordValue: pointer
    pDwordValue: pointer
    pLongValue: pointer
    pULargeIntegerValue: pointer
    pLargeIntegerValue: pointer
    pStringValue: pointer
    pMultiSzValue: pointer
    pSecurityDescriptor: pointer
    pResourceClassValue: pointer
    pResourceClassInfoValue: pointer
    pDiskSignatureValue: pointer
    pScsiAddressValue: pointer
    pDiskNumberValue: pointer
    pPartitionInfoValue: pointer
    pRequiredDependencyValue: pointer
    pPartitionInfoValueEx: pointer
    pPartitionInfoValueEx2: pointer
    pFileTimeValue: pointer
struct CLUSPROP_BUFFER_HELPER
{
    void* pb;
    void* pw;
    void* pdw;
    void* pl;
    void* psz;
    void* pList;
    void* pSyntax;
    void* pName;
    void* pValue;
    void* pBinaryValue;
    void* pWordValue;
    void* pDwordValue;
    void* pLongValue;
    void* pULargeIntegerValue;
    void* pLargeIntegerValue;
    void* pStringValue;
    void* pMultiSzValue;
    void* pSecurityDescriptor;
    void* pResourceClassValue;
    void* pResourceClassInfoValue;
    void* pDiskSignatureValue;
    void* pScsiAddressValue;
    void* pDiskNumberValue;
    void* pPartitionInfoValue;
    void* pRequiredDependencyValue;
    void* pPartitionInfoValueEx;
    void* pPartitionInfoValueEx2;
    void* pFileTimeValue;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; CLUSPROP_BUFFER_HELPER サイズ: 4 バイト(x86)
dim st, 1    ; 4byte整数×1(構造体サイズ 4 / 4 切り上げ)
; pb : BYTE* (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; pw : WORD* (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; pdw : DWORD* (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; pl : INT* (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; psz : LPWSTR (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; pList : CLUSPROP_LIST* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pSyntax : CLUSPROP_SYNTAX* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pName : CLUSPROP_SZ* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pValue : CLUSPROP_VALUE* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pBinaryValue : CLUSPROP_BINARY* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pWordValue : CLUSPROP_WORD* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pDwordValue : CLUSPROP_DWORD* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pLongValue : CLUSPROP_LONG* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pULargeIntegerValue : CLUSPROP_ULARGE_INTEGER* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pLargeIntegerValue : CLUSPROP_LARGE_INTEGER* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pStringValue : CLUSPROP_SZ* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pMultiSzValue : CLUSPROP_SZ* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pSecurityDescriptor : CLUSPROP_SECURITY_DESCRIPTOR* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pResourceClassValue : CLUSPROP_RESOURCE_CLASS* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pResourceClassInfoValue : CLUSPROP_RESOURCE_CLASS_INFO* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pDiskSignatureValue : CLUSPROP_DWORD* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pScsiAddressValue : CLUSPROP_SCSI_ADDRESS* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pDiskNumberValue : CLUSPROP_DWORD* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pPartitionInfoValue : CLUSPROP_PARTITION_INFO* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pRequiredDependencyValue : CLUSPROP_REQUIRED_DEPENDENCY* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pPartitionInfoValueEx : CLUSPROP_PARTITION_INFO_EX* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pPartitionInfoValueEx2 : CLUSPROP_PARTITION_INFO_EX2* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; pFileTimeValue : CLUSPROP_FILETIME* (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; CLUSPROP_BUFFER_HELPER サイズ: 8 バイト(x64)
dim st, 2    ; 4byte整数×2(構造体サイズ 8 / 4 切り上げ)
; pb : BYTE* (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; pw : WORD* (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; pdw : DWORD* (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; pl : INT* (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; psz : LPWSTR (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; pList : CLUSPROP_LIST* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pSyntax : CLUSPROP_SYNTAX* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pName : CLUSPROP_SZ* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pValue : CLUSPROP_VALUE* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pBinaryValue : CLUSPROP_BINARY* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pWordValue : CLUSPROP_WORD* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pDwordValue : CLUSPROP_DWORD* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pLongValue : CLUSPROP_LONG* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pULargeIntegerValue : CLUSPROP_ULARGE_INTEGER* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pLargeIntegerValue : CLUSPROP_LARGE_INTEGER* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pStringValue : CLUSPROP_SZ* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pMultiSzValue : CLUSPROP_SZ* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pSecurityDescriptor : CLUSPROP_SECURITY_DESCRIPTOR* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pResourceClassValue : CLUSPROP_RESOURCE_CLASS* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pResourceClassInfoValue : CLUSPROP_RESOURCE_CLASS_INFO* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pDiskSignatureValue : CLUSPROP_DWORD* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pScsiAddressValue : CLUSPROP_SCSI_ADDRESS* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pDiskNumberValue : CLUSPROP_DWORD* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pPartitionInfoValue : CLUSPROP_PARTITION_INFO* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pRequiredDependencyValue : CLUSPROP_REQUIRED_DEPENDENCY* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pPartitionInfoValueEx : CLUSPROP_PARTITION_INFO_EX* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pPartitionInfoValueEx2 : CLUSPROP_PARTITION_INFO_EX2* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; pFileTimeValue : CLUSPROP_FILETIME* (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global CLUSPROP_BUFFER_HELPER
    #field intptr pb
    #field intptr pw
    #field intptr pdw
    #field intptr pl
    #field intptr psz
    #field intptr pList
    #field intptr pSyntax
    #field intptr pName
    #field intptr pValue
    #field intptr pBinaryValue
    #field intptr pWordValue
    #field intptr pDwordValue
    #field intptr pLongValue
    #field intptr pULargeIntegerValue
    #field intptr pLargeIntegerValue
    #field intptr pStringValue
    #field intptr pMultiSzValue
    #field intptr pSecurityDescriptor
    #field intptr pResourceClassValue
    #field intptr pResourceClassInfoValue
    #field intptr pDiskSignatureValue
    #field intptr pScsiAddressValue
    #field intptr pDiskNumberValue
    #field intptr pPartitionInfoValue
    #field intptr pRequiredDependencyValue
    #field intptr pPartitionInfoValueEx
    #field intptr pPartitionInfoValueEx2
    #field intptr pFileTimeValue
#endstruct

stdim st, CLUSPROP_BUFFER_HELPER        ; NSTRUCT 変数を確保