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

VS_FIXEDFILEINFO

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

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

フィールド

フィールドサイズx64x86説明
dwSignatureDWORD4+0+0値 0xFEEF04BD が格納されます。これは、ファイル内から VS_FIXEDFILEINFO 構造体を検索する際に、 VS_VERSIONINFO 構造体の szKey メンバーとともに使用されます。
dwStrucVersionDWORD4+4+4この構造体のバイナリバージョン番号です。このメンバーの上位ワードにはメジャーバージョン番号が、下位ワードにはマイナーバージョン番号が格納されます。
dwFileVersionMSDWORD4+8+8ファイルのバイナリバージョン番号の上位 32 ビットです。このメンバーは dwFileVersionLS とともに使用され、数値比較に使用する 64 ビット値を構成します。
dwFileVersionLSDWORD4+12+12ファイルのバイナリバージョン番号の下位 32 ビットです。このメンバーは dwFileVersionMS とともに使用され、数値比較に使用する 64 ビット値を構成します。
dwProductVersionMSDWORD4+16+16このファイルが配布された製品のバイナリバージョン番号の上位 32 ビットです。このメンバーは dwProductVersionLS とともに使用され、数値比較に使用する 64 ビット値を構成します。
dwProductVersionLSDWORD4+20+20このファイルが配布された製品のバイナリバージョン番号の下位 32 ビットです。このメンバーは dwProductVersionMS とともに使用され、数値比較に使用する 64 ビット値を構成します。
dwFileFlagsMaskDWORD4+24+24dwFileFlags 内の有効なビットを指定するビットマスクが格納されます。 ビットは、ファイルの作成時に定義されていた場合にのみ有効です。
dwFileFlagsVS_FIXEDFILEINFO_FILE_FLAGS4+28+28

ファイルのブール属性を指定するビットマスクが格納されます。このメンバーには、次の値の 1 つ以上を含めることができます。

Value Meaning
VS_FF_DEBUG
0x00000001L
ファイルにデバッグ情報が含まれているか、デバッグ機能を有効にしてコンパイルされています。
VS_FF_INFOINFERRED
0x00000010L
ファイルのバージョン構造体が動的に作成されたため、この構造体の一部のメンバーが空であるか、正しくない可能性があります。このフラグは、ファイルの VS_VERSIONINFO データ内では決して設定しないでください。
VS_FF_PATCHED
0x00000004L
ファイルが変更されており、同じバージョン番号の出荷時の元のファイルとは一致しません。
VS_FF_PRERELEASE
0x00000002L
ファイルは開発版であり、商用にリリースされた製品ではありません。
VS_FF_PRIVATEBUILD
0x00000008L
ファイルは標準のリリース手順を使用してビルドされていません。このフラグが設定されている場合、StringFileInfo 構造体には PrivateBuild エントリを含める必要があります。
VS_FF_SPECIALBUILD
0x00000020L
ファイルは元の企業によって標準のリリース手順でビルドされましたが、同じバージョン番号の通常のファイルの派生版です。このフラグが設定されている場合、StringFileInfo 構造体には SpecialBuild エントリを含める必要があります。
dwFileOSVS_FIXEDFILEINFO_FILE_OS4+32+32

このファイルが設計対象とするオペレーティングシステムです。このメンバーには、次の値のいずれかを指定できます。

Value Meaning
VOS_DOS
0x00010000L
ファイルは MS-DOS 向けに設計されています。
VOS_NT
0x00040000L
ファイルは Windows NT 向けに設計されています。
VOS__WINDOWS16
0x00000001L
ファイルは 16 ビット版 Windows 向けに設計されています。
VOS__WINDOWS32
0x00000004L
ファイルは 32 ビット版 Windows 向けに設計されています。
VOS_OS216
0x00020000L
ファイルは 16 ビット版 OS/2 向けに設計されています。
VOS_OS232
0x00030000L
ファイルは 32 ビット版 OS/2 向けに設計されています。
VOS__PM16
0x00000002L
ファイルは 16 ビット版 Presentation Manager 向けに設計されています。
VOS__PM32
0x00000003L
ファイルは 32 ビット版 Presentation Manager 向けに設計されています。
VOS_UNKNOWN
0x00000000L
ファイルが設計対象としたオペレーティングシステムは、システムにとって不明です。
 

アプリケーションは、これらの値を組み合わせて、別のオペレーティングシステム上で動作するオペレーティングシステム向けにファイルが設計されていることを示せます。次の dwFileOS の値はその例ですが、すべてを網羅した一覧ではありません。

Value Meaning
VOS_DOS_WINDOWS16
0x00010001L
ファイルは MS-DOS 上で動作する 16 ビット版 Windows 向けに設計されています。
VOS_DOS_WINDOWS32
0x00010004L
ファイルは MS-DOS 上で動作する 32 ビット版 Windows 向けに設計されています。
VOS_NT_WINDOWS32
0x00040004L
ファイルは Windows NT 向けに設計されています。
VOS_OS216_PM16
0x00020002L
ファイルは 16 ビット版 OS/2 上で動作する 16 ビット版 Presentation Manager 向けに設計されています。
VOS_OS232_PM32
0x00030003L
ファイルは 32 ビット版 OS/2 上で動作する 32 ビット版 Presentation Manager 向けに設計されています。
dwFileTypeDWORD4+36+36

ファイルの全般的な種類です。このメンバーには、次の値のいずれかを指定できます。その他の値はすべて予約済みです。

Value Meaning
VFT_APP
0x00000001L
ファイルにはアプリケーションが含まれています。
VFT_DLL
0x00000002L
ファイルには DLL が含まれています。
VFT_DRV
0x00000003L
ファイルにはデバイスドライバーが含まれています。 dwFileTypeVFT_DRV の場合、 dwFileSubtype にはドライバーのより具体的な説明が格納されます。
VFT_FONT
0x00000004L
ファイルにはフォントが含まれています。 dwFileTypeVFT_FONT の場合、 dwFileSubtype にはフォントファイルのより具体的な説明が格納されます。
VFT_STATIC_LIB
0x00000007L
ファイルにはスタティックリンクライブラリが含まれています。
VFT_UNKNOWN
0x00000000L
ファイルの種類は、システムにとって不明です。
VFT_VXD
0x00000005L
ファイルには仮想デバイスが含まれています。
dwFileSubtypeDWORD4+40+40

ファイルの機能です。指定できる値は dwFileType の値によって異なります。次の一覧に記載されていない dwFileType のすべての値については、 dwFileSubtype は 0 になります。

dwFileTypeVFT_DRV の場合、 dwFileSubtype には次の値のいずれかを指定できます。

Value Meaning
VFT2_DRV_COMM
0x0000000AL
ファイルには通信ドライバーが含まれています。
VFT2_DRV_DISPLAY
0x00000004L
ファイルにはディスプレイドライバーが含まれています。
VFT2_DRV_INSTALLABLE
0x00000008L
ファイルにはインストール可能なドライバーが含まれています。
VFT2_DRV_KEYBOARD
0x00000002L
ファイルにはキーボードドライバーが含まれています。
VFT2_DRV_LANGUAGE
0x00000003L
ファイルには言語ドライバーが含まれています。
VFT2_DRV_MOUSE
0x00000005L
ファイルにはマウスドライバーが含まれています。
VFT2_DRV_NETWORK
0x00000006L
ファイルにはネットワークドライバーが含まれています。
VFT2_DRV_PRINTER
0x00000001L
ファイルにはプリンタードライバーが含まれています。
VFT2_DRV_SOUND
0x00000009L
ファイルにはサウンドドライバーが含まれています。
VFT2_DRV_SYSTEM
0x00000007L
ファイルにはシステムドライバーが含まれています。
VFT2_DRV_VERSIONED_PRINTER
0x0000000CL
ファイルにはバージョン管理されたプリンタードライバーが含まれています。
VFT2_UNKNOWN
0x00000000L
ドライバーの種類は、システムにとって不明です。
 

dwFileTypeVFT_FONT の場合、 dwFileSubtype には次の値のいずれかを指定できます。

Value Meaning
VFT2_FONT_RASTER
0x00000001L
ファイルにはラスターフォントが含まれています。
VFT2_FONT_TRUETYPE
0x00000003L
ファイルには TrueType フォントが含まれています。
VFT2_FONT_VECTOR
0x00000002L
ファイルにはベクターフォントが含まれています。
VFT2_UNKNOWN
0x00000000L
フォントの種類は、システムにとって不明です。
 

dwFileTypeVFT_VXD の場合、 dwFileSubtype には、仮想デバイス制御ブロックに含まれる仮想デバイス識別子が格納されます。

ここに記載されていない dwFileSubtype の値はすべて予約済みです。

dwFileDateMSDWORD4+44+44ファイルの 64 ビットのバイナリ形式の作成日時タイムスタンプの上位 32 ビットです。
dwFileDateLSDWORD4+48+48ファイルの 64 ビットのバイナリ形式の作成日時タイムスタンプの下位 32 ビットです。

公式ドキュメント

ファイルのバージョン情報を格納します。この情報は言語およびコードページに依存しません。

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

各言語での定義

#include <windows.h>

// VS_FIXEDFILEINFO  (x64 52 / x86 52 バイト)
typedef struct VS_FIXEDFILEINFO {
    DWORD dwSignature;
    DWORD dwStrucVersion;
    DWORD dwFileVersionMS;
    DWORD dwFileVersionLS;
    DWORD dwProductVersionMS;
    DWORD dwProductVersionLS;
    DWORD dwFileFlagsMask;
    VS_FIXEDFILEINFO_FILE_FLAGS dwFileFlags;
    VS_FIXEDFILEINFO_FILE_OS dwFileOS;
    DWORD dwFileType;
    DWORD dwFileSubtype;
    DWORD dwFileDateMS;
    DWORD dwFileDateLS;
} VS_FIXEDFILEINFO;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct VS_FIXEDFILEINFO
{
    public uint dwSignature;
    public uint dwStrucVersion;
    public uint dwFileVersionMS;
    public uint dwFileVersionLS;
    public uint dwProductVersionMS;
    public uint dwProductVersionLS;
    public uint dwFileFlagsMask;
    public uint dwFileFlags;
    public uint dwFileOS;
    public uint dwFileType;
    public uint dwFileSubtype;
    public uint dwFileDateMS;
    public uint dwFileDateLS;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure VS_FIXEDFILEINFO
    Public dwSignature As UInteger
    Public dwStrucVersion As UInteger
    Public dwFileVersionMS As UInteger
    Public dwFileVersionLS As UInteger
    Public dwProductVersionMS As UInteger
    Public dwProductVersionLS As UInteger
    Public dwFileFlagsMask As UInteger
    Public dwFileFlags As UInteger
    Public dwFileOS As UInteger
    Public dwFileType As UInteger
    Public dwFileSubtype As UInteger
    Public dwFileDateMS As UInteger
    Public dwFileDateLS As UInteger
End Structure
import ctypes
from ctypes import wintypes

class VS_FIXEDFILEINFO(ctypes.Structure):
    _fields_ = [
        ("dwSignature", wintypes.DWORD),
        ("dwStrucVersion", wintypes.DWORD),
        ("dwFileVersionMS", wintypes.DWORD),
        ("dwFileVersionLS", wintypes.DWORD),
        ("dwProductVersionMS", wintypes.DWORD),
        ("dwProductVersionLS", wintypes.DWORD),
        ("dwFileFlagsMask", wintypes.DWORD),
        ("dwFileFlags", wintypes.DWORD),
        ("dwFileOS", wintypes.DWORD),
        ("dwFileType", wintypes.DWORD),
        ("dwFileSubtype", wintypes.DWORD),
        ("dwFileDateMS", wintypes.DWORD),
        ("dwFileDateLS", wintypes.DWORD),
    ]
#[repr(C)]
pub struct VS_FIXEDFILEINFO {
    pub dwSignature: u32,
    pub dwStrucVersion: u32,
    pub dwFileVersionMS: u32,
    pub dwFileVersionLS: u32,
    pub dwProductVersionMS: u32,
    pub dwProductVersionLS: u32,
    pub dwFileFlagsMask: u32,
    pub dwFileFlags: u32,
    pub dwFileOS: u32,
    pub dwFileType: u32,
    pub dwFileSubtype: u32,
    pub dwFileDateMS: u32,
    pub dwFileDateLS: u32,
}
import "golang.org/x/sys/windows"

type VS_FIXEDFILEINFO struct {
	dwSignature uint32
	dwStrucVersion uint32
	dwFileVersionMS uint32
	dwFileVersionLS uint32
	dwProductVersionMS uint32
	dwProductVersionLS uint32
	dwFileFlagsMask uint32
	dwFileFlags uint32
	dwFileOS uint32
	dwFileType uint32
	dwFileSubtype uint32
	dwFileDateMS uint32
	dwFileDateLS uint32
}
type
  VS_FIXEDFILEINFO = record
    dwSignature: DWORD;
    dwStrucVersion: DWORD;
    dwFileVersionMS: DWORD;
    dwFileVersionLS: DWORD;
    dwProductVersionMS: DWORD;
    dwProductVersionLS: DWORD;
    dwFileFlagsMask: DWORD;
    dwFileFlags: DWORD;
    dwFileOS: DWORD;
    dwFileType: DWORD;
    dwFileSubtype: DWORD;
    dwFileDateMS: DWORD;
    dwFileDateLS: DWORD;
  end;
const VS_FIXEDFILEINFO = extern struct {
    dwSignature: u32,
    dwStrucVersion: u32,
    dwFileVersionMS: u32,
    dwFileVersionLS: u32,
    dwProductVersionMS: u32,
    dwProductVersionLS: u32,
    dwFileFlagsMask: u32,
    dwFileFlags: u32,
    dwFileOS: u32,
    dwFileType: u32,
    dwFileSubtype: u32,
    dwFileDateMS: u32,
    dwFileDateLS: u32,
};
type
  VS_FIXEDFILEINFO {.bycopy.} = object
    dwSignature: uint32
    dwStrucVersion: uint32
    dwFileVersionMS: uint32
    dwFileVersionLS: uint32
    dwProductVersionMS: uint32
    dwProductVersionLS: uint32
    dwFileFlagsMask: uint32
    dwFileFlags: uint32
    dwFileOS: uint32
    dwFileType: uint32
    dwFileSubtype: uint32
    dwFileDateMS: uint32
    dwFileDateLS: uint32
struct VS_FIXEDFILEINFO
{
    uint dwSignature;
    uint dwStrucVersion;
    uint dwFileVersionMS;
    uint dwFileVersionLS;
    uint dwProductVersionMS;
    uint dwProductVersionLS;
    uint dwFileFlagsMask;
    uint dwFileFlags;
    uint dwFileOS;
    uint dwFileType;
    uint dwFileSubtype;
    uint dwFileDateMS;
    uint dwFileDateLS;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; VS_FIXEDFILEINFO サイズ: 52 バイト(x64)
dim st, 13    ; 4byte整数×13(構造体サイズ 52 / 4 切り上げ)
; dwSignature : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwStrucVersion : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwFileVersionMS : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwFileVersionLS : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwProductVersionMS : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwProductVersionLS : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwFileFlagsMask : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwFileFlags : VS_FIXEDFILEINFO_FILE_FLAGS (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwFileOS : VS_FIXEDFILEINFO_FILE_OS (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwFileType : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwFileSubtype : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; dwFileDateMS : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwFileDateLS : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global VS_FIXEDFILEINFO
    #field int dwSignature
    #field int dwStrucVersion
    #field int dwFileVersionMS
    #field int dwFileVersionLS
    #field int dwProductVersionMS
    #field int dwProductVersionLS
    #field int dwFileFlagsMask
    #field int dwFileFlags
    #field int dwFileOS
    #field int dwFileType
    #field int dwFileSubtype
    #field int dwFileDateMS
    #field int dwFileDateLS
#endstruct

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