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

TAPE_STATISTICS

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

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

フィールド

フィールドサイズx64x86説明
VersionDWORD4+0+0構造体のバージョン番号。
FlagsDWORD4+4+4どの統計フィールドが有効かを示すフラグ。
RecoveredWritesLONGLONG8+8+8回復された(再試行で成功した)書き込みエラーの累積回数。
UnrecoveredWritesLONGLONG8+16+16回復不能だった書き込みエラーの累積回数。
RecoveredReadsLONGLONG8+24+24回復された(再試行で成功した)読み取りエラーの累積回数。
UnrecoveredReadsLONGLONG8+32+32回復不能だった読み取りエラーの累積回数。
CompressionRatioReadsBYTE1+40+40読み取り時のデータ圧縮率を示す値。
CompressionRatioWritesBYTE1+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 Structure
import 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: uint8
struct 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