// Copyright 2014 The Crashpad Authors. All rights reserved. // // 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 //! \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_