Win32 API 日本語リファレンス
ホームSystem.SystemServices › SCRUB_DATA_OUTPUT

SCRUB_DATA_OUTPUT

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

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

フィールド

フィールドサイズx64x86説明
SizeDWORD4+0+0本構造体のサイズをバイト単位で示す。
FlagsDWORD4+4+4出力のフラグ。
StatusDWORD4+8+8スクラブ操作の結果ステータス。
ErrorFileOffsetULONGLONG8+16+16エラーが発生したファイル内オフセット。
ErrorLengthULONGLONG8+24+24エラー領域の長さをバイト単位で示す。
NumberOfBytesRepairedULONGLONG8+32+32修復されたバイト数。
NumberOfBytesFailedULONGLONG8+40+40修復に失敗したバイト数。
InternalFileReferenceULONGLONG8+48+48内部ファイル参照値。
ResumeContextLengthWORD2+56+56再開コンテキストの長さをバイト単位で示す。
ParityExtentDataOffsetWORD2+58+58パリティエクステントデータへのオフセット。
NextStartingByteOffsetULONGLONG8+64+64次回スクラブ開始位置のバイトオフセット。
ValidDataLengthULONGLONG8+72+72有効データの長さをバイト単位で示す。
ReservedDWORD16+80+80将来用の予約フィールド。
NumberOfMetadataBytesProcessedULONGLONG8+96+96処理されたメタデータのバイト数。
NumberOfDataBytesProcessedULONGLONG8+104+104処理されたデータのバイト数。
TotalNumberOfMetadataBytesInUseULONGLONG8+112+112使用中メタデータの合計バイト数。
TotalNumberOfDataBytesInUseULONGLONG8+120+120使用中データの合計バイト数。
DataBytesSkippedDueToNoAllocationULONGLONG8+128+128未割り当てのためスキップしたデータバイト数。
DataBytesSkippedDueToInvalidRunULONGLONG8+136+136無効なラン(エクステント)のためスキップしたバイト数。
DataBytesSkippedDueToIntegrityStreamULONGLONG8+144+144整合性ストリームのためスキップしたバイト数。
DataBytesSkippedDueToRegionBeingCleanULONGLONG8+152+152クリーンな領域のためスキップしたバイト数。
DataBytesSkippedDueToLockConflictULONGLONG8+160+160ロック競合のためスキップしたバイト数。
DataBytesSkippedDueToNoScrubDataFlagULONGLONG8+168+168スクラブデータフラグ未設定のためスキップしたバイト数。
DataBytesSkippedDueToNoScrubNonIntegrityStreamFlagULONGLONG8+176+176非整合性ストリームスクラブフラグ未設定のためスキップしたバイト数。
DataBytesScrubbedULONGLONG8+184+184実際にスクラブ(検証)されたデータバイト数。
ResumeContextBYTE1040+192+192中断操作を再開するためのコンテキストデータの先頭(可変長)。

各言語での定義

#include <windows.h>

// SCRUB_DATA_OUTPUT  (x64 1232 / x86 1232 バイト)
typedef struct SCRUB_DATA_OUTPUT {
    DWORD Size;
    DWORD Flags;
    DWORD Status;
    ULONGLONG ErrorFileOffset;
    ULONGLONG ErrorLength;
    ULONGLONG NumberOfBytesRepaired;
    ULONGLONG NumberOfBytesFailed;
    ULONGLONG InternalFileReference;
    WORD ResumeContextLength;
    WORD ParityExtentDataOffset;
    ULONGLONG NextStartingByteOffset;
    ULONGLONG ValidDataLength;
    DWORD Reserved[4];
    ULONGLONG NumberOfMetadataBytesProcessed;
    ULONGLONG NumberOfDataBytesProcessed;
    ULONGLONG TotalNumberOfMetadataBytesInUse;
    ULONGLONG TotalNumberOfDataBytesInUse;
    ULONGLONG DataBytesSkippedDueToNoAllocation;
    ULONGLONG DataBytesSkippedDueToInvalidRun;
    ULONGLONG DataBytesSkippedDueToIntegrityStream;
    ULONGLONG DataBytesSkippedDueToRegionBeingClean;
    ULONGLONG DataBytesSkippedDueToLockConflict;
    ULONGLONG DataBytesSkippedDueToNoScrubDataFlag;
    ULONGLONG DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag;
    ULONGLONG DataBytesScrubbed;
    BYTE ResumeContext[1040];
} SCRUB_DATA_OUTPUT;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SCRUB_DATA_OUTPUT
{
    public uint Size;
    public uint Flags;
    public uint Status;
    public ulong ErrorFileOffset;
    public ulong ErrorLength;
    public ulong NumberOfBytesRepaired;
    public ulong NumberOfBytesFailed;
    public ulong InternalFileReference;
    public ushort ResumeContextLength;
    public ushort ParityExtentDataOffset;
    public ulong NextStartingByteOffset;
    public ulong ValidDataLength;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public uint[] Reserved;
    public ulong NumberOfMetadataBytesProcessed;
    public ulong NumberOfDataBytesProcessed;
    public ulong TotalNumberOfMetadataBytesInUse;
    public ulong TotalNumberOfDataBytesInUse;
    public ulong DataBytesSkippedDueToNoAllocation;
    public ulong DataBytesSkippedDueToInvalidRun;
    public ulong DataBytesSkippedDueToIntegrityStream;
    public ulong DataBytesSkippedDueToRegionBeingClean;
    public ulong DataBytesSkippedDueToLockConflict;
    public ulong DataBytesSkippedDueToNoScrubDataFlag;
    public ulong DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag;
    public ulong DataBytesScrubbed;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1040)] public byte[] ResumeContext;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure SCRUB_DATA_OUTPUT
    Public Size As UInteger
    Public Flags As UInteger
    Public Status As UInteger
    Public ErrorFileOffset As ULong
    Public ErrorLength As ULong
    Public NumberOfBytesRepaired As ULong
    Public NumberOfBytesFailed As ULong
    Public InternalFileReference As ULong
    Public ResumeContextLength As UShort
    Public ParityExtentDataOffset As UShort
    Public NextStartingByteOffset As ULong
    Public ValidDataLength As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=4)> Public Reserved() As UInteger
    Public NumberOfMetadataBytesProcessed As ULong
    Public NumberOfDataBytesProcessed As ULong
    Public TotalNumberOfMetadataBytesInUse As ULong
    Public TotalNumberOfDataBytesInUse As ULong
    Public DataBytesSkippedDueToNoAllocation As ULong
    Public DataBytesSkippedDueToInvalidRun As ULong
    Public DataBytesSkippedDueToIntegrityStream As ULong
    Public DataBytesSkippedDueToRegionBeingClean As ULong
    Public DataBytesSkippedDueToLockConflict As ULong
    Public DataBytesSkippedDueToNoScrubDataFlag As ULong
    Public DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag As ULong
    Public DataBytesScrubbed As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=1040)> Public ResumeContext() As Byte
End Structure
import ctypes
from ctypes import wintypes

class SCRUB_DATA_OUTPUT(ctypes.Structure):
    _fields_ = [
        ("Size", wintypes.DWORD),
        ("Flags", wintypes.DWORD),
        ("Status", wintypes.DWORD),
        ("ErrorFileOffset", ctypes.c_ulonglong),
        ("ErrorLength", ctypes.c_ulonglong),
        ("NumberOfBytesRepaired", ctypes.c_ulonglong),
        ("NumberOfBytesFailed", ctypes.c_ulonglong),
        ("InternalFileReference", ctypes.c_ulonglong),
        ("ResumeContextLength", ctypes.c_ushort),
        ("ParityExtentDataOffset", ctypes.c_ushort),
        ("NextStartingByteOffset", ctypes.c_ulonglong),
        ("ValidDataLength", ctypes.c_ulonglong),
        ("Reserved", wintypes.DWORD * 4),
        ("NumberOfMetadataBytesProcessed", ctypes.c_ulonglong),
        ("NumberOfDataBytesProcessed", ctypes.c_ulonglong),
        ("TotalNumberOfMetadataBytesInUse", ctypes.c_ulonglong),
        ("TotalNumberOfDataBytesInUse", ctypes.c_ulonglong),
        ("DataBytesSkippedDueToNoAllocation", ctypes.c_ulonglong),
        ("DataBytesSkippedDueToInvalidRun", ctypes.c_ulonglong),
        ("DataBytesSkippedDueToIntegrityStream", ctypes.c_ulonglong),
        ("DataBytesSkippedDueToRegionBeingClean", ctypes.c_ulonglong),
        ("DataBytesSkippedDueToLockConflict", ctypes.c_ulonglong),
        ("DataBytesSkippedDueToNoScrubDataFlag", ctypes.c_ulonglong),
        ("DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag", ctypes.c_ulonglong),
        ("DataBytesScrubbed", ctypes.c_ulonglong),
        ("ResumeContext", ctypes.c_ubyte * 1040),
    ]
#[repr(C)]
pub struct SCRUB_DATA_OUTPUT {
    pub Size: u32,
    pub Flags: u32,
    pub Status: u32,
    pub ErrorFileOffset: u64,
    pub ErrorLength: u64,
    pub NumberOfBytesRepaired: u64,
    pub NumberOfBytesFailed: u64,
    pub InternalFileReference: u64,
    pub ResumeContextLength: u16,
    pub ParityExtentDataOffset: u16,
    pub NextStartingByteOffset: u64,
    pub ValidDataLength: u64,
    pub Reserved: [u32; 4],
    pub NumberOfMetadataBytesProcessed: u64,
    pub NumberOfDataBytesProcessed: u64,
    pub TotalNumberOfMetadataBytesInUse: u64,
    pub TotalNumberOfDataBytesInUse: u64,
    pub DataBytesSkippedDueToNoAllocation: u64,
    pub DataBytesSkippedDueToInvalidRun: u64,
    pub DataBytesSkippedDueToIntegrityStream: u64,
    pub DataBytesSkippedDueToRegionBeingClean: u64,
    pub DataBytesSkippedDueToLockConflict: u64,
    pub DataBytesSkippedDueToNoScrubDataFlag: u64,
    pub DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag: u64,
    pub DataBytesScrubbed: u64,
    pub ResumeContext: [u8; 1040],
}
import "golang.org/x/sys/windows"

type SCRUB_DATA_OUTPUT struct {
	Size uint32
	Flags uint32
	Status uint32
	ErrorFileOffset uint64
	ErrorLength uint64
	NumberOfBytesRepaired uint64
	NumberOfBytesFailed uint64
	InternalFileReference uint64
	ResumeContextLength uint16
	ParityExtentDataOffset uint16
	NextStartingByteOffset uint64
	ValidDataLength uint64
	Reserved [4]uint32
	NumberOfMetadataBytesProcessed uint64
	NumberOfDataBytesProcessed uint64
	TotalNumberOfMetadataBytesInUse uint64
	TotalNumberOfDataBytesInUse uint64
	DataBytesSkippedDueToNoAllocation uint64
	DataBytesSkippedDueToInvalidRun uint64
	DataBytesSkippedDueToIntegrityStream uint64
	DataBytesSkippedDueToRegionBeingClean uint64
	DataBytesSkippedDueToLockConflict uint64
	DataBytesSkippedDueToNoScrubDataFlag uint64
	DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag uint64
	DataBytesScrubbed uint64
	ResumeContext [1040]byte
}
type
  SCRUB_DATA_OUTPUT = record
    Size: DWORD;
    Flags: DWORD;
    Status: DWORD;
    ErrorFileOffset: UInt64;
    ErrorLength: UInt64;
    NumberOfBytesRepaired: UInt64;
    NumberOfBytesFailed: UInt64;
    InternalFileReference: UInt64;
    ResumeContextLength: Word;
    ParityExtentDataOffset: Word;
    NextStartingByteOffset: UInt64;
    ValidDataLength: UInt64;
    Reserved: array[0..3] of DWORD;
    NumberOfMetadataBytesProcessed: UInt64;
    NumberOfDataBytesProcessed: UInt64;
    TotalNumberOfMetadataBytesInUse: UInt64;
    TotalNumberOfDataBytesInUse: UInt64;
    DataBytesSkippedDueToNoAllocation: UInt64;
    DataBytesSkippedDueToInvalidRun: UInt64;
    DataBytesSkippedDueToIntegrityStream: UInt64;
    DataBytesSkippedDueToRegionBeingClean: UInt64;
    DataBytesSkippedDueToLockConflict: UInt64;
    DataBytesSkippedDueToNoScrubDataFlag: UInt64;
    DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag: UInt64;
    DataBytesScrubbed: UInt64;
    ResumeContext: array[0..1039] of Byte;
  end;
const SCRUB_DATA_OUTPUT = extern struct {
    Size: u32,
    Flags: u32,
    Status: u32,
    ErrorFileOffset: u64,
    ErrorLength: u64,
    NumberOfBytesRepaired: u64,
    NumberOfBytesFailed: u64,
    InternalFileReference: u64,
    ResumeContextLength: u16,
    ParityExtentDataOffset: u16,
    NextStartingByteOffset: u64,
    ValidDataLength: u64,
    Reserved: [4]u32,
    NumberOfMetadataBytesProcessed: u64,
    NumberOfDataBytesProcessed: u64,
    TotalNumberOfMetadataBytesInUse: u64,
    TotalNumberOfDataBytesInUse: u64,
    DataBytesSkippedDueToNoAllocation: u64,
    DataBytesSkippedDueToInvalidRun: u64,
    DataBytesSkippedDueToIntegrityStream: u64,
    DataBytesSkippedDueToRegionBeingClean: u64,
    DataBytesSkippedDueToLockConflict: u64,
    DataBytesSkippedDueToNoScrubDataFlag: u64,
    DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag: u64,
    DataBytesScrubbed: u64,
    ResumeContext: [1040]u8,
};
type
  SCRUB_DATA_OUTPUT {.bycopy.} = object
    Size: uint32
    Flags: uint32
    Status: uint32
    ErrorFileOffset: uint64
    ErrorLength: uint64
    NumberOfBytesRepaired: uint64
    NumberOfBytesFailed: uint64
    InternalFileReference: uint64
    ResumeContextLength: uint16
    ParityExtentDataOffset: uint16
    NextStartingByteOffset: uint64
    ValidDataLength: uint64
    Reserved: array[4, uint32]
    NumberOfMetadataBytesProcessed: uint64
    NumberOfDataBytesProcessed: uint64
    TotalNumberOfMetadataBytesInUse: uint64
    TotalNumberOfDataBytesInUse: uint64
    DataBytesSkippedDueToNoAllocation: uint64
    DataBytesSkippedDueToInvalidRun: uint64
    DataBytesSkippedDueToIntegrityStream: uint64
    DataBytesSkippedDueToRegionBeingClean: uint64
    DataBytesSkippedDueToLockConflict: uint64
    DataBytesSkippedDueToNoScrubDataFlag: uint64
    DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag: uint64
    DataBytesScrubbed: uint64
    ResumeContext: array[1040, uint8]
struct SCRUB_DATA_OUTPUT
{
    uint Size;
    uint Flags;
    uint Status;
    ulong ErrorFileOffset;
    ulong ErrorLength;
    ulong NumberOfBytesRepaired;
    ulong NumberOfBytesFailed;
    ulong InternalFileReference;
    ushort ResumeContextLength;
    ushort ParityExtentDataOffset;
    ulong NextStartingByteOffset;
    ulong ValidDataLength;
    uint[4] Reserved;
    ulong NumberOfMetadataBytesProcessed;
    ulong NumberOfDataBytesProcessed;
    ulong TotalNumberOfMetadataBytesInUse;
    ulong TotalNumberOfDataBytesInUse;
    ulong DataBytesSkippedDueToNoAllocation;
    ulong DataBytesSkippedDueToInvalidRun;
    ulong DataBytesSkippedDueToIntegrityStream;
    ulong DataBytesSkippedDueToRegionBeingClean;
    ulong DataBytesSkippedDueToLockConflict;
    ulong DataBytesSkippedDueToNoScrubDataFlag;
    ulong DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag;
    ulong DataBytesScrubbed;
    ubyte[1040] ResumeContext;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; SCRUB_DATA_OUTPUT サイズ: 1232 バイト(x64)
dim st, 308    ; 4byte整数×308(構造体サイズ 1232 / 4 切り上げ)
; Size : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Flags : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; Status : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; ErrorFileOffset : ULONGLONG (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; ErrorLength : ULONGLONG (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; NumberOfBytesRepaired : ULONGLONG (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; NumberOfBytesFailed : ULONGLONG (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; InternalFileReference : ULONGLONG (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ResumeContextLength : WORD (+56, 2byte)  wpoke st,56,値  /  値 = wpeek(st,56)
; ParityExtentDataOffset : WORD (+58, 2byte)  wpoke st,58,値  /  値 = wpeek(st,58)
; NextStartingByteOffset : ULONGLONG (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; ValidDataLength : ULONGLONG (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; Reserved : DWORD (+80, 16byte)  varptr(st)+80 を基点に操作(16byte:入れ子/配列)
; NumberOfMetadataBytesProcessed : ULONGLONG (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; NumberOfDataBytesProcessed : ULONGLONG (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; TotalNumberOfMetadataBytesInUse : ULONGLONG (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; TotalNumberOfDataBytesInUse : ULONGLONG (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; DataBytesSkippedDueToNoAllocation : ULONGLONG (+128, 8byte)  qpoke st,128,値 / qpeek(st,128)  ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; DataBytesSkippedDueToInvalidRun : ULONGLONG (+136, 8byte)  qpoke st,136,値 / qpeek(st,136)  ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; DataBytesSkippedDueToIntegrityStream : ULONGLONG (+144, 8byte)  qpoke st,144,値 / qpeek(st,144)  ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; DataBytesSkippedDueToRegionBeingClean : ULONGLONG (+152, 8byte)  qpoke st,152,値 / qpeek(st,152)  ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; DataBytesSkippedDueToLockConflict : ULONGLONG (+160, 8byte)  qpoke st,160,値 / qpeek(st,160)  ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; DataBytesSkippedDueToNoScrubDataFlag : ULONGLONG (+168, 8byte)  qpoke st,168,値 / qpeek(st,168)  ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag : ULONGLONG (+176, 8byte)  qpoke st,176,値 / qpeek(st,176)  ※IronHSPのみ。3.7/3.8は lpoke st,176,下位 : lpoke st,180,上位
; DataBytesScrubbed : ULONGLONG (+184, 8byte)  qpoke st,184,値 / qpeek(st,184)  ※IronHSPのみ。3.7/3.8は lpoke st,184,下位 : lpoke st,188,上位
; ResumeContext : BYTE (+192, 1040byte)  varptr(st)+192 を基点に操作(1040byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global SCRUB_DATA_OUTPUT
    #field int Size
    #field int Flags
    #field int Status
    #field int64 ErrorFileOffset
    #field int64 ErrorLength
    #field int64 NumberOfBytesRepaired
    #field int64 NumberOfBytesFailed
    #field int64 InternalFileReference
    #field short ResumeContextLength
    #field short ParityExtentDataOffset
    #field int64 NextStartingByteOffset
    #field int64 ValidDataLength
    #field int Reserved 4
    #field int64 NumberOfMetadataBytesProcessed
    #field int64 NumberOfDataBytesProcessed
    #field int64 TotalNumberOfMetadataBytesInUse
    #field int64 TotalNumberOfDataBytesInUse
    #field int64 DataBytesSkippedDueToNoAllocation
    #field int64 DataBytesSkippedDueToInvalidRun
    #field int64 DataBytesSkippedDueToIntegrityStream
    #field int64 DataBytesSkippedDueToRegionBeingClean
    #field int64 DataBytesSkippedDueToLockConflict
    #field int64 DataBytesSkippedDueToNoScrubDataFlag
    #field int64 DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag
    #field int64 DataBytesScrubbed
    #field byte ResumeContext 1040
#endstruct

stdim st, SCRUB_DATA_OUTPUT        ; NSTRUCT 変数を確保
st->Size = 100
mes "Size=" + st->Size