crashpad/compat/non_win/verrsrc.h
Mark Mentovai dfe81014f7 Add compat to Crashpad.
compat includes headers providing definitions normally provided by the
system, in cases where the system SDK does not always provide the
correct or up-to-date definitions, and cases where code on different
platforms needs to access definitions normally only available on one
platform.

To provide definitions on a single platform, where the system SDK may
not provide the definitions correctly, use subdirectories named for the
platform, such as “mac”.

To provide definitions normally available on only one platform to
others, use subdirectories that identify that they are to be used on
platforms other than the one that originated their definitions, such as
“non_win”.

In all cases, headers should be named as they are natively in their
respective SDKs, so that it’s possible to #include them according to
their usual names.

R=rsesek@chromium.org

Review URL: https://codereview.chromium.org/432843002
2014-07-31 13:45:51 -04:00

185 lines
5.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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 <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 files version information
//! resource, and is obtained by calling `VerQueryValue()` with an `lpSubBlock`
//! argument of `"\"` (a single backslash).
struct VS_FIXEDFILEINFO {
//! \brief The structures magic number, ::VS_FFI_SIGNATURE.
uint32_t dwSignature;
//! \brief The structures version, ::VS_FFI_STRUCVERSION.
uint32_t dwStrucVersion;
//! \brief The more-significant portion of the files 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 files 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 products 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 products 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 files intended operating system, a value of \ref VOS_x
//! "VOS_*".
uint32_t dwFileOS;
//! \brief The files type, a value of \ref VFT_x "VFT_*".
uint32_t dwFileType;
//! \brief The files 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 files 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 files 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_