Win32 API 日本語リファレンス
ホームStorage.Cabinets › ERF

ERF

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

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

フィールド

フィールドサイズx64x86説明
erfOperINT4+0+0

FCI/FDI のエラーコードです。

FCI では次の値が返されます。

意味
FCIERR_NONE
0x00
エラーはありません。
FCIERR_OPEN_SRC
0x01
キャビネットに格納するファイルのオープンに失敗しました。
FCIERR_READ_SRC
0x02
キャビネットに格納するファイルの読み取りに失敗しました。
FCIERR_ALLOC_FAIL
0x03
FCI でメモリが不足しました。
FCIERR_TEMP_FILE
0x04
一時ファイルを作成できませんでした。
FCIERR_BAD_COMPR_TYPE
0x05
不明な圧縮形式です。
FCIERR_CAB_FILE
0x06
キャビネットファイルを作成できませんでした。
FCIERR_USER_ABORT
0x07
FCI が中止されました。
FCIERR_MCI_FAIL
0x08
データの圧縮に失敗しました。
FCIERR_CAB_FORMAT_LIMIT
0x09
データサイズまたはファイル数が CAB 形式の制限を超えました。

FDI では次の値が返されます。

意味
FDIERROR_NONE
0x00
エラーはありません。
FDIERROR_CABINET_NOT_FOUND
0x01
キャビネットファイルが見つかりませんでした。
FDIERROR_NOT_A_CABINET
0x02
キャビネットファイルの形式が正しくありません。
FDIERROR_UNKNOWN_CABINET_VERSION
0x03
キャビネットファイルのバージョン番号が不明です。
FDIERROR_CORRUPT_CABINET
0x04
キャビネットファイルが破損しています。
FDIERROR_ALLOC_FAIL
0x05
メモリが不足しています。
FDIERROR_BAD_COMPR_TYPE
0x06
キャビネットフォルダーで不明な圧縮形式が使用されています。
FDIERROR_MDI_FAIL
0x07
キャビネットファイルからのデータの展開に失敗しました。
FDIERROR_TARGET_FILE
0x08
対象ファイルへの書き込みに失敗しました。
FDIERROR_RESERVE_MISMATCH
0x09
セット内のキャビネットの RESERVE サイズが一致していません。
FDIERROR_WRONG_CABINET
0x0A
fdintNEXT_CABINET によって返されたキャビネットが正しくありません。
FDIERROR_USER_ABORT
0x0B
FDI が中止されました。
erfTypeINT4+4+4FCI/FDI が設定する省略可能なエラー値です。FCI の場合、通常は C ランタイムの errno 値です。
fErrorBOOL4+8+8エラーを示すフラグです。TRUE の場合、エラーが発生しています。

公式ドキュメント

[この構造体は、サポートされていない Extract 関数が必要とする情報を格納します。このドキュメントは情報提供のみを目的として提供されています。]

ERF 構造体は、FCI/FDI からのエラー情報を格納します。呼び出し元はこの構造体を変更しないでください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// ERF  (x64 12 / x86 12 バイト)
typedef struct ERF {
    INT erfOper;
    INT erfType;
    BOOL fError;
} ERF;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ERF
{
    public int erfOper;
    public int erfType;
    [MarshalAs(UnmanagedType.Bool)] public bool fError;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure ERF
    Public erfOper As Integer
    Public erfType As Integer
    <MarshalAs(UnmanagedType.Bool)> Public fError As Boolean
End Structure
import ctypes
from ctypes import wintypes

class ERF(ctypes.Structure):
    _fields_ = [
        ("erfOper", ctypes.c_int),
        ("erfType", ctypes.c_int),
        ("fError", wintypes.BOOL),
    ]
#[repr(C)]
pub struct ERF {
    pub erfOper: i32,
    pub erfType: i32,
    pub fError: i32,
}
import "golang.org/x/sys/windows"

type ERF struct {
	erfOper int32
	erfType int32
	fError int32
}
type
  ERF = record
    erfOper: Integer;
    erfType: Integer;
    fError: BOOL;
  end;
const ERF = extern struct {
    erfOper: i32,
    erfType: i32,
    fError: i32,
};
type
  ERF {.bycopy.} = object
    erfOper: int32
    erfType: int32
    fError: int32
struct ERF
{
    int erfOper;
    int erfType;
    int fError;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; ERF サイズ: 12 バイト(x64)
dim st, 3    ; 4byte整数×3(構造体サイズ 12 / 4 切り上げ)
; erfOper : INT (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; erfType : INT (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; fError : BOOL (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global ERF
    #field int erfOper
    #field int erfType
    #field bool fError
#endstruct

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