blob: 84dd97ac0d059a5f220454776543d6838f7a8364 [file] [log] [blame]
// Copyright 2014 The Crashpad Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef CRASHPAD_COMPAT_NON_WIN_VERRSRC_H_
#define CRASHPAD_COMPAT_NON_WIN_VERRSRC_H_
#include <stdint.h>
//! \file
//! \brief The magic number for a VS_FIXEDFILEINFO structure, stored in
//! VS_FIXEDFILEINFO::dwSignature.
#define VS_FFI_SIGNATURE 0xfeef04bd
//! \brief The version of a VS_FIXEDFILEINFO structure, stored in
//! VS_FIXEDFILEINFO::dwStrucVersion.
#define VS_FFI_STRUCVERSION 0x00010000
//! \anchor VS_FF_x
//! \name VS_FF_*
//!
//! \brief File attribute values for VS_FIXEDFILEINFO::dwFileFlags and
//! VS_FIXEDFILEINFO::dwFileFlagsMask.
//! \{
#define VS_FF_DEBUG 0x00000001
#define VS_FF_PRERELEASE 0x00000002
#define VS_FF_PATCHED 0x00000004
#define VS_FF_PRIVATEBUILD 0x00000008
#define VS_FF_INFOINFERRED 0x00000010
#define VS_FF_SPECIALBUILD 0x00000020
//! \}
//! \anchor VOS_x
//! \name VOS_*
//!
//! \brief Operating system values for VS_FIXEDFILEINFO::dwFileOS.
//! \{
#define VOS_UNKNOWN 0x00000000
#define VOS_DOS 0x00010000
#define VOS_OS216 0x00020000
#define VOS_OS232 0x00030000
#define VOS_NT 0x00040000
#define VOS_WINCE 0x00050000
#define VOS__BASE 0x00000000
#define VOS__WINDOWS16 0x00000001
#define VOS__PM16 0x00000002
#define VOS__PM32 0x00000003
#define VOS__WINDOWS32 0x00000004
#define VOS_DOS_WINDOWS16 0x00010001
#define VOS_DOS_WINDOWS32 0x00010004
#define VOS_OS216_PM16 0x00020002
#define VOS_OS232_PM32 0x00030003
#define VOS_NT_WINDOWS32 0x00040004
//! \}
//! \anchor VFT_x
//! \name VFT_*
//!
//! \brief File type values for VS_FIXEDFILEINFO::dwFileType.
//! \{
#define VFT_UNKNOWN 0x00000000
#define VFT_APP 0x00000001
#define VFT_DLL 0x00000002
#define VFT_DRV 0x00000003
#define VFT_FONT 0x00000004
#define VFT_VXD 0x00000005
#define VFT_STATIC_LIB 0x00000007
//! \}
//! \anchor VFT2_x
//! \name VFT2_*
//!
//! \brief File subtype values for VS_FIXEDFILEINFO::dwFileSubtype.
//! \{
#define VFT2_UNKNOWN 0x00000000
#define VFT2_DRV_PRINTER 0x00000001
#define VFT2_DRV_KEYBOARD 0x00000002
#define VFT2_DRV_LANGUAGE 0x00000003
#define VFT2_DRV_DISPLAY 0x00000004
#define VFT2_DRV_MOUSE 0x00000005
#define VFT2_DRV_NETWORK 0x00000006
#define VFT2_DRV_SYSTEM 0x00000007
#define VFT2_DRV_INSTALLABLE 0x00000008
#define VFT2_DRV_SOUND 0x00000009
#define VFT2_DRV_COMM 0x0000000A
#define VFT2_DRV_INPUTMETHOD 0x0000000B
#define VFT2_DRV_VERSIONED_PRINTER 0x0000000C
#define VFT2_FONT_RASTER 0x00000001
#define VFT2_FONT_VECTOR 0x00000002
#define VFT2_FONT_TRUETYPE 0x00000003
//! \}
//! \brief Version information for a file.
//!
//! On Windows, this information is derived from a file’s version information
//! resource, and is obtained by calling `VerQueryValue()` with an `lpSubBlock`
//! argument of `"\"` (a single backslash).
struct VS_FIXEDFILEINFO {
//! \brief The structure’s magic number, ::VS_FFI_SIGNATURE.
uint32_t dwSignature;
//! \brief The structure’s version, ::VS_FFI_STRUCVERSION.
uint32_t dwStrucVersion;
//! \brief The more-significant portion of the file’s version number.
//!
//! This field contains the first two components of a four-component version
//! number. For a file whose version is 1.2.3.4, this field would be
//! `0x00010002`.
//!
//! \sa dwFileVersionLS
uint32_t dwFileVersionMS;
//! \brief The less-significant portion of the file’s version number.
//!
//! This field contains the last two components of a four-component version
//! number. For a file whose version is 1.2.3.4, this field would be
//! `0x00030004`.
//!
//! \sa dwFileVersionMS
uint32_t dwFileVersionLS;
//! \brief The more-significant portion of the product’s version number.
//!
//! This field contains the first two components of a four-component version
//! number. For a product whose version is 1.2.3.4, this field would be
//! `0x00010002`.
//!
//! \sa dwProductVersionLS
uint32_t dwProductVersionMS;
//! \brief The less-significant portion of the product’s version number.
//!
//! This field contains the last two components of a four-component version
//! number. For a product whose version is 1.2.3.4, this field would be
//! `0x00030004`.
//!
//! \sa dwProductVersionMS
uint32_t dwProductVersionLS;
//! \brief A bitmask of \ref VS_FF_x "VS_FF_*" values indicating which bits in
//! #dwFileFlags are valid.
uint32_t dwFileFlagsMask;
//! \brief A bitmask of \ref VS_FF_x "VS_FF_*" values identifying attributes
//! of the file. Only bits present in #dwFileFlagsMask are valid.
uint32_t dwFileFlags;
//! \brief The file’s intended operating system, a value of \ref VOS_x
//! "VOS_*".
uint32_t dwFileOS;
//! \brief The file’s type, a value of \ref VFT_x "VFT_*".
uint32_t dwFileType;
//! \brief The file’s subtype, a value of \ref VFT2_x "VFT2_*" corresponding
//! to its #dwFileType, if the file type has subtypes.
uint32_t dwFileSubtype;
//! \brief The more-significant portion of the file’s creation date.
//!
//! The intended encoding of this field is unknown. This field is unused and
//! always has the value `0`.
uint32_t dwFileDateMS;
//! \brief The less-significant portion of the file’s creation date.
//!
//! The intended encoding of this field is unknown. This field is unused and
//! always has the value `0`.
uint32_t dwFileDateLS;
};
#endif // CRASHPAD_COMPAT_NON_WIN_VERRSRC_H_