ホーム › System.Ioctl › TAPE_STATISTICS
TAPE_STATISTICS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Version | DWORD | 4 | +0 | +0 | 構造体のバージョン番号。 |
| Flags | DWORD | 4 | +4 | +4 | どの統計フィールドが有効かを示すフラグ。 |
| RecoveredWrites | LONGLONG | 8 | +8 | +8 | 回復された(再試行で成功した)書き込みエラーの累積回数。 |
| UnrecoveredWrites | LONGLONG | 8 | +16 | +16 | 回復不能だった書き込みエラーの累積回数。 |
| RecoveredReads | LONGLONG | 8 | +24 | +24 | 回復された(再試行で成功した)読み取りエラーの累積回数。 |
| UnrecoveredReads | LONGLONG | 8 | +32 | +32 | 回復不能だった読み取りエラーの累積回数。 |
| CompressionRatioReads | BYTE | 1 | +40 | +40 | 読み取り時のデータ圧縮率を示す値。 |
| CompressionRatioWrites | BYTE | 1 | +41 | +41 | 書き込み時のデータ圧縮率を示す値。 |
各言語での定義
#include <windows.h>
// TAPE_STATISTICS (x64 48 / x86 48 バイト)
typedef struct TAPE_STATISTICS {
DWORD Version;
DWORD Flags;
LONGLONG RecoveredWrites;
LONGLONG UnrecoveredWrites;
LONGLONG RecoveredReads;
LONGLONG UnrecoveredReads;
BYTE CompressionRatioReads;
BYTE CompressionRatioWrites;
} TAPE_STATISTICS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct TAPE_STATISTICS
{
public uint Version;
public uint Flags;
public long RecoveredWrites;
public long UnrecoveredWrites;
public long RecoveredReads;
public long UnrecoveredReads;
public byte CompressionRatioReads;
public byte CompressionRatioWrites;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure TAPE_STATISTICS
Public Version As UInteger
Public Flags As UInteger
Public RecoveredWrites As Long
Public UnrecoveredWrites As Long
Public RecoveredReads As Long
Public UnrecoveredReads As Long
Public CompressionRatioReads As Byte
Public CompressionRatioWrites As Byte
End Structureimport ctypes
from ctypes import wintypes
class TAPE_STATISTICS(ctypes.Structure):
_fields_ = [
("Version", wintypes.DWORD),
("Flags", wintypes.DWORD),
("RecoveredWrites", ctypes.c_longlong),
("UnrecoveredWrites", ctypes.c_longlong),
("RecoveredReads", ctypes.c_longlong),
("UnrecoveredReads", ctypes.c_longlong),
("CompressionRatioReads", ctypes.c_ubyte),
("CompressionRatioWrites", ctypes.c_ubyte),
]#[repr(C)]
pub struct TAPE_STATISTICS {
pub Version: u32,
pub Flags: u32,
pub RecoveredWrites: i64,
pub UnrecoveredWrites: i64,
pub RecoveredReads: i64,
pub UnrecoveredReads: i64,
pub CompressionRatioReads: u8,
pub CompressionRatioWrites: u8,
}import "golang.org/x/sys/windows"
type TAPE_STATISTICS struct {
Version uint32
Flags uint32
RecoveredWrites int64
UnrecoveredWrites int64
RecoveredReads int64
UnrecoveredReads int64
CompressionRatioReads byte
CompressionRatioWrites byte
}type
TAPE_STATISTICS = record
Version: DWORD;
Flags: DWORD;
RecoveredWrites: Int64;
UnrecoveredWrites: Int64;
RecoveredReads: Int64;
UnrecoveredReads: Int64;
CompressionRatioReads: Byte;
CompressionRatioWrites: Byte;
end;const TAPE_STATISTICS = extern struct {
Version: u32,
Flags: u32,
RecoveredWrites: i64,
UnrecoveredWrites: i64,
RecoveredReads: i64,
UnrecoveredReads: i64,
CompressionRatioReads: u8,
CompressionRatioWrites: u8,
};type
TAPE_STATISTICS {.bycopy.} = object
Version: uint32
Flags: uint32
RecoveredWrites: int64
UnrecoveredWrites: int64
RecoveredReads: int64
UnrecoveredReads: int64
CompressionRatioReads: uint8
CompressionRatioWrites: uint8struct TAPE_STATISTICS
{
uint Version;
uint Flags;
long RecoveredWrites;
long UnrecoveredWrites;
long RecoveredReads;
long UnrecoveredReads;
ubyte CompressionRatioReads;
ubyte CompressionRatioWrites;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; TAPE_STATISTICS サイズ: 48 バイト(x64)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; Version : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; Flags : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; RecoveredWrites : LONGLONG (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; UnrecoveredWrites : LONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; RecoveredReads : LONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; UnrecoveredReads : LONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; CompressionRatioReads : BYTE (+40, 1byte) poke st,40,値 / 値 = peek(st,40)
; CompressionRatioWrites : BYTE (+41, 1byte) poke st,41,値 / 値 = peek(st,41)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global TAPE_STATISTICS
#field int Version
#field int Flags
#field int64 RecoveredWrites
#field int64 UnrecoveredWrites
#field int64 RecoveredReads
#field int64 UnrecoveredReads
#field byte CompressionRatioReads
#field byte CompressionRatioWrites
#endstruct
stdim st, TAPE_STATISTICS ; NSTRUCT 変数を確保
st->Version = 100
mes "Version=" + st->Version