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

IMAGE_RESOURCE_DIRECTORY

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

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

フィールド

フィールドサイズx64x86説明
CharacteristicsDWORD4+0+0リソースの属性フラグ。現状0。
TimeDateStampDWORD4+4+4リソースデータ作成日時のタイムスタンプ。
MajorVersionWORD2+8+8リソース構造のメジャーバージョン。
MinorVersionWORD2+10+10リソース構造のマイナーバージョン。
NumberOfNamedEntriesWORD2+12+12名前付きエントリ(文字列ID)の数。
NumberOfIdEntriesWORD2+14+14数値IDエントリの数。

各言語での定義

#include <windows.h>

// IMAGE_RESOURCE_DIRECTORY  (x64 16 / x86 16 バイト)
typedef struct IMAGE_RESOURCE_DIRECTORY {
    DWORD Characteristics;
    DWORD TimeDateStamp;
    WORD MajorVersion;
    WORD MinorVersion;
    WORD NumberOfNamedEntries;
    WORD NumberOfIdEntries;
} IMAGE_RESOURCE_DIRECTORY;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IMAGE_RESOURCE_DIRECTORY
{
    public uint Characteristics;
    public uint TimeDateStamp;
    public ushort MajorVersion;
    public ushort MinorVersion;
    public ushort NumberOfNamedEntries;
    public ushort NumberOfIdEntries;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IMAGE_RESOURCE_DIRECTORY
    Public Characteristics As UInteger
    Public TimeDateStamp As UInteger
    Public MajorVersion As UShort
    Public MinorVersion As UShort
    Public NumberOfNamedEntries As UShort
    Public NumberOfIdEntries As UShort
End Structure
import ctypes
from ctypes import wintypes

class IMAGE_RESOURCE_DIRECTORY(ctypes.Structure):
    _fields_ = [
        ("Characteristics", wintypes.DWORD),
        ("TimeDateStamp", wintypes.DWORD),
        ("MajorVersion", ctypes.c_ushort),
        ("MinorVersion", ctypes.c_ushort),
        ("NumberOfNamedEntries", ctypes.c_ushort),
        ("NumberOfIdEntries", ctypes.c_ushort),
    ]
#[repr(C)]
pub struct IMAGE_RESOURCE_DIRECTORY {
    pub Characteristics: u32,
    pub TimeDateStamp: u32,
    pub MajorVersion: u16,
    pub MinorVersion: u16,
    pub NumberOfNamedEntries: u16,
    pub NumberOfIdEntries: u16,
}
import "golang.org/x/sys/windows"

type IMAGE_RESOURCE_DIRECTORY struct {
	Characteristics uint32
	TimeDateStamp uint32
	MajorVersion uint16
	MinorVersion uint16
	NumberOfNamedEntries uint16
	NumberOfIdEntries uint16
}
type
  IMAGE_RESOURCE_DIRECTORY = record
    Characteristics: DWORD;
    TimeDateStamp: DWORD;
    MajorVersion: Word;
    MinorVersion: Word;
    NumberOfNamedEntries: Word;
    NumberOfIdEntries: Word;
  end;
const IMAGE_RESOURCE_DIRECTORY = extern struct {
    Characteristics: u32,
    TimeDateStamp: u32,
    MajorVersion: u16,
    MinorVersion: u16,
    NumberOfNamedEntries: u16,
    NumberOfIdEntries: u16,
};
type
  IMAGE_RESOURCE_DIRECTORY {.bycopy.} = object
    Characteristics: uint32
    TimeDateStamp: uint32
    MajorVersion: uint16
    MinorVersion: uint16
    NumberOfNamedEntries: uint16
    NumberOfIdEntries: uint16
struct IMAGE_RESOURCE_DIRECTORY
{
    uint Characteristics;
    uint TimeDateStamp;
    ushort MajorVersion;
    ushort MinorVersion;
    ushort NumberOfNamedEntries;
    ushort NumberOfIdEntries;
}

HSP用 定義

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

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

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