Files
BinaryObjectScanner/BinaryObjectScanner.Models/PortableExecutable/StringData.cs
Matt Nadareski 473cbc5694 BOS.* -> BOS.*
2023-03-07 16:59:14 -05:00

80 lines
4.7 KiB
C#

namespace BinaryObjectScanner.Models.PortableExecutable
{
/// <summary>
/// Represents the organization of data in a file-version resource. It contains a string
/// that describes a specific aspect of a file, for example, a file's version, its
/// copyright notices, or its trademarks.
/// </summary>
/// <see href="https://learn.microsoft.com/en-us/windows/win32/menurc/string-str"/>
public sealed class StringData
{
/// <summary>
/// The length, in bytes, of this String structure.
/// </summary>
public ushort Length;
/// <summary>
/// The size, in words, of the Value member.
/// </summary>
public ushort ValueLength;
/// <summary>
/// The type of data in the version resource.
/// </summary>
public VersionResourceType ResourceType;
/// <summary>
/// An arbitrary Unicode string. The Key member can be one or more of the following
/// values. These values are guidelines only.
/// - Comments: The Value member contains any additional information that should be
/// displayed for diagnostic purposes. This string can be an arbitrary length.
/// - CompanyName: The Value member identifies the company that produced the file.
/// For example, "Microsoft Corporation" or "Standard Microsystems Corporation, Inc."
/// - FileDescription: The Value member describes the file in such a way that it can be
/// presented to users. This string may be presented in a list box when the user is
/// choosing files to install. For example, "Keyboard driver for AT-style keyboards"
/// or "Microsoft Word for Windows".
/// - FileVersion: The Value member identifies the version of this file. For example,
/// Value could be "3.00A" or "5.00.RC2".
/// - InternalName: The Value member identifies the file's internal name, if one exists.
/// For example, this string could contain the module name for a DLL, a virtual device
/// name for a Windows virtual device, or a device name for a MS-DOS device driver.
/// - LegalCopyright: The Value member describes all copyright notices, trademarks, and
/// registered trademarks that apply to the file. This should include the full text of
/// all notices, legal symbols, copyright dates, trademark numbers, and so on. In
/// English, this string should be in the format "Copyright Microsoft Corp. 1990 1994".
/// - LegalTrademarks: The Value member describes all trademarks and registered trademarks
/// that apply to the file. This should include the full text of all notices, legal
/// symbols, trademark numbers, and so on. In English, this string should be in the
/// format "Windows is a trademark of Microsoft Corporation".
/// - OriginalFilename: The Value member identifies the original name of the file, not
/// including a path. This enables an application to determine whether a file has been
/// renamed by a user. This name may not be MS-DOS 8.3-format if the file is specific
/// to a non-FAT file system.
/// - PrivateBuild: The Value member describes by whom, where, and why this private version
/// of the file was built. This string should only be present if the VS_FF_PRIVATEBUILD
/// flag is set in the dwFileFlags member of the VS_FIXEDFILEINFO structure. For example,
/// Value could be "Built by OSCAR on \OSCAR2".
/// - ProductName: The Value member identifies the name of the product with which this file is
/// distributed. For example, this string could be "Microsoft Windows".
/// - ProductVersion: The Value member identifies the version of the product with which this
/// file is distributed. For example, Value could be "3.00A" or "5.00.RC2".
/// - SpecialBuild: The Value member describes how this version of the file differs from the
/// normal version. This entry should only be present if the VS_FF_SPECIALBUILD flag is
/// set in the dwFileFlags member of the VS_FIXEDFILEINFO structure. For example, Value
/// could be "Private build for Olivetti solving mouse problems on M250 and M250E computers".
/// </summary>
public string Key;
/// <summary>
/// As many zero words as necessary to align the Value member on a 32-bit boundary.
/// </summary>
public ushort Padding;
/// <summary>
/// A zero-terminated string. See the szKey member description for more information.
/// </summary>
public string Value;
}
}