Crashpad

Public Member Functions | List of all members
crashpad::internal::SystemSnapshotWin Class Referencefinal

A SystemSnapshot of the running system, when the system runs Windows. More...

`#include "snapshot/win/system_snapshot_win.h"`

Inheritance diagram for crashpad::internal::SystemSnapshotWin:

## Public Member Functions
void | Initialize (ProcessReaderWin *process_reader)
| Initializes the object. More...
CPUArchitecture | GetCPUArchitecture () const override
| Returns the snapshot system’s CPU architecture. More...
uint32_t | CPURevision () const override
| Returns the snapshot system’s CPU revision. More...
uint8_t | CPUCount () const override
| Returns the total number of CPUs present in the snapshot system.
std::string | CPUVendor () const override
| Returns the vendor of the snapshot system’s CPUs. More...
void | CPUFrequency (uint64_t *current_hz, uint64_t *max_hz) const override
| Returns frequency information about the snapshot system’s CPUs in current_hz and max_hz. More...
uint32_t | CPUX86Signature () const override
| Returns an x86-family snapshot system’s CPU signature. More...
uint64_t | CPUX86Features () const override
| Returns an x86-family snapshot system’s CPU features. More...
uint64_t | CPUX86ExtendedFeatures () const override
| Returns an x86-family snapshot system’s extended CPU features. More...
uint32_t | CPUX86Leaf7Features () const override
| Returns an x86-family snapshot system’s “leaf 7” CPU features. More...
bool | CPUX86SupportsDAZ () const override
| Returns an x86-family snapshot system’s CPU’s support for the SSE DAZ (“denormals are zeros”) mode. More...
OperatingSystem | GetOperatingSystem () const override
| Returns the snapshot system’s operating system family.
bool | OSServer () const override
| Returns whether the snapshot system runs a server variant of its operating system.
void | OSVersion (int *major, int *minor, int *bugfix, std::string *build) const override
| Returns the snapshot system’s operating system version information in major, minor, bugfix, and build. More...
std::string | OSVersionFull () const override
| Returns the snapshot system’s full operating system version information in string format. More...
bool | NXEnabled () const override
| Returns the status of the NX (no-execute, or XD, execute-disable) feature on the snapshot system. More...
std::string | MachineDescription () const override
| Returns a description of the snapshot system’s hardware in string format. More...
void | TimeZone (DaylightSavingTimeStatus *dst_status, int *standard_offset_seconds, int *daylight_offset_seconds, std::string *standard_name, std::string *daylight_name) const override
| Returns time zone information from the snapshot system, based on its locale configuration and real-time clock. More...

## Additional Inherited Members
Public Types inherited from crashpad::SystemSnapshot
enum | OperatingSystem
| A system’s operating system family. More...
enum | DaylightSavingTimeStatus
| A system’s daylight saving time status. More...

## Detailed Description

A SystemSnapshot of the running system, when the system runs Windows.

## Member Function Documentation

## ◆ CPUFrequency()

void crashpad::internal::SystemSnapshotWin::CPUFrequency | ( | uint64_t * | current_hz,
|  | uint64_t * | max_hz
| ) |  | const
| override virtual

Returns frequency information about the snapshot system’s CPUs in current_hz and max_hz.

Parameters

  [out] | current_hz | The snapshot system’s CPU clock frequency in Hz at the time of the snapshot.
  [out] | max_hz | The snapshot system’s maximum possible CPU clock frequency.

Implements crashpad::SystemSnapshot.

## ◆ CPURevision()

uint32_t crashpad::internal::SystemSnapshotWin::CPURevision | ( |  | ) | const
| override virtual

Returns the snapshot system’s CPU revision.

For x86-family CPUs (including x86_64 and 32-bit x86), this is the CPU family, model, and stepping ID values from `cpuid 1` `eax`. The family and model values are adjusted to take the extended family and model IDs into account. These values are encoded in this method’s return value with the family in the high high 16 bits, the model in the next 8 bits, and the stepping in the low 8 bits.

Returns
  A CPU architecture-specific value identifying the CPU revision.

Implements crashpad::SystemSnapshot.

## ◆ CPUVendor()

std::string crashpad::internal::SystemSnapshotWin::CPUVendor | ( |  | ) | const
| override virtual

Returns the vendor of the snapshot system’s CPUs.

For x86-family CPUs (including x86_64 and 32-bit x86), this is the CPU vendor identification string as encoded in `cpuid 0` `ebx`, `edx`, and `ecx`.

Returns
  A string identifying the vendor of the snapshot system’s CPUs.

Implements crashpad::SystemSnapshot.

## ◆ CPUX86ExtendedFeatures()

uint64_t crashpad::internal::SystemSnapshotWin::CPUX86ExtendedFeatures | ( |  | ) | const
| override virtual

Returns an x86-family snapshot system’s extended CPU features.

This is the extended feature information as encoded in `cpuid 0x80000001` `edx` and `ecx`. `edx` is placed in the low half of the return value, and `ecx` is placed in the high half.

This method must only be called when GetCPUArchitecture() indicates an x86-family CPU architecture (kCPUArchitectureX86 or kCPUArchitectureX86_64).

Returns
  An x86 family-specific value identifying extended CPU features.

See also
  CPUX86Features()
  CPUX86Leaf7Features()

Implements crashpad::SystemSnapshot.

## ◆ CPUX86Features()

uint64_t crashpad::internal::SystemSnapshotWin::CPUX86Features | ( |  | ) | const
| override virtual

Returns an x86-family snapshot system’s CPU features.

This is the feature information as encoded in `cpuid 1` `edx` and `ecx`. `edx` is placed in the low half of the return value, and `ecx` is placed in the high half.

This method must only be called when GetCPUArchitecture() indicates an x86-family CPU architecture (kCPUArchitectureX86 or kCPUArchitectureX86_64).

Returns
  An x86 family-specific value identifying CPU features.

See also
  CPUX86ExtendedFeatures()
  CPUX86Leaf7Features()

Implements crashpad::SystemSnapshot.

## ◆ CPUX86Leaf7Features()

uint32_t crashpad::internal::SystemSnapshotWin::CPUX86Leaf7Features | ( |  | ) | const
| override virtual

Returns an x86-family snapshot system’s “leaf 7” CPU features.

This is the “leaf 7” feature information as encoded in `cpuid 7` `ebx`. If `cpuid 7` is not supported by the snapshot CPU, this returns `0`.

This method must only be called when GetCPUArchitecture() indicates an x86-family CPU architecture (kCPUArchitectureX86 or kCPUArchitectureX86_64).

Returns
  An x86 family-specific value identifying “leaf 7” CPU features.

See also
  CPUX86Features()
  CPUX86ExtendedFeatures()

Implements crashpad::SystemSnapshot.

## ◆ CPUX86Signature()

uint32_t crashpad::internal::SystemSnapshotWin::CPUX86Signature | ( |  | ) | const
| override virtual

Returns an x86-family snapshot system’s CPU signature.

This is the family, model, and stepping ID values as encoded in `cpuid 1` `eax`.

This method must only be called when GetCPUArchitecture() indicates an x86-family CPU architecture (kCPUArchitectureX86 or kCPUArchitectureX86_64).

Returns
  An x86 family-specific value identifying the CPU signature.

Implements crashpad::SystemSnapshot.

## ◆ CPUX86SupportsDAZ()

bool crashpad::internal::SystemSnapshotWin::CPUX86SupportsDAZ | ( |  | ) | const
| override virtual

Returns an x86-family snapshot system’s CPU’s support for the SSE DAZ (“denormals are zeros”) mode.

This determines whether the CPU supports DAZ mode at all, not whether this mode is enabled for any particular thread. DAZ mode support is detected by examining the DAZ bit in the `mxcsr_mask` field of the floating-point context saved by `fxsave`.

This method must only be called when GetCPUArchitecture() indicates an x86-family CPU architecture (kCPUArchitectureX86 or kCPUArchitectureX86_64).

Returns
  `true` if the snapshot system’s CPUs support the SSE DAZ mode, `false` if they do not.

Implements crashpad::SystemSnapshot.

## ◆ GetCPUArchitecture()

CPUArchitecture crashpad::internal::SystemSnapshotWin::GetCPUArchitecture | ( |  | ) | const
| override virtual

Returns the snapshot system’s CPU architecture.

In some cases, a system may be able to run processes of multiple specific architecture types. For example, systems based on 64-bit architectures such as x86_64 are often able to run 32-bit code of another architecture in the same family, such as 32-bit x86. On these systems, this method will return the architecture of the process that the snapshot is associated with, provided that the SystemSnapshot object was obtained from ProcessSnapshot::System(). This renders one aspect of this method’s return value a process attribute rather than a system attribute, but it’s defined here rather than in ProcessSnapshot because the CPU architecture is a better conceptual fit for the system abstraction alongside these other related methods.

Implements crashpad::SystemSnapshot.

## ◆ Initialize()

void crashpad::internal::SystemSnapshotWin::Initialize | ( | ProcessReaderWin * | process_reader | ) |

Initializes the object.

Parameters

  [in] | process_reader | A reader for the process being snapshotted.
      It seems odd that a system snapshot implementation would need a
      ProcessReaderWin, but some of the information reported about the
      system depends on the process it's being reported for. For example,
      the architecture returned by GetCPUArchitecture() should be the
      architecture of the process, which may be different than the native
      architecture of the system: an x86_64 system can run both x86_64 and
      32-bit x86 processes.

## ◆ MachineDescription()

std::string crashpad::internal::SystemSnapshotWin::MachineDescription | ( |  | ) | const
| override virtual

Returns a description of the snapshot system’s hardware in string format.

For macOS, the string contains the Mac model and board ID. A mid-2014 15" MacBook Pro would be identified as `"MacBookPro11,3 (Mac-2BD1B31983FE1663)"`.

Implements crashpad::SystemSnapshot.

## ◆ NXEnabled()

bool crashpad::internal::SystemSnapshotWin::NXEnabled | ( |  | ) | const
| override virtual

Returns the status of the NX (no-execute, or XD, execute-disable) feature on the snapshot system.

This refers to a feature that allows mapped readable pages to be marked as non-executable.

Returns
  `true` if the snapshot system supports NX and it is enabled.

Implements crashpad::SystemSnapshot.

## ◆ OSVersion()

void crashpad::internal::SystemSnapshotWin::OSVersion | ( | int * | major,
|  | int * | minor,
|  | int * | bugfix,
|  | std::string * | build
| ) |  | const
| override virtual

Returns the snapshot system’s operating system version information in major, minor, bugfix, and build.

Parameters

  [out] | major | The snapshot system’s operating system’s first (major) version number component. This would be `10` for macOS 10.12.1, and `6` for Windows 7 (NT 6.1) SP1 version 6.1.7601.
  [out] | minor | The snapshot system’s operating system’s second (minor) version number component. This would be `12` for macOS 10.12.1, and `1` for Windows 7 (NT 6.1) SP1 version 6.1.7601.
  [out] | bugfix | The snapshot system’s operating system’s third (bugfix) version number component. This would be `1` for macOS 10.12.1, and `7601` for Windows 7 (NT 6.1) SP1 version 6.1.7601.
  [out] | build | A string further identifying an operating system version. For macOS 10.12.1, this would be `"16B2657"`. For Windows, this would be `"Service Pack 1"` if that service pack was installed. On Android, the `ro.build.fingerprint` system property would be appended. For Linux and other Unix-like systems, this would be the kernel version from `uname -srvm`, possibly with additional information appended.

Implements crashpad::SystemSnapshot.

## ◆ OSVersionFull()

std::string crashpad::internal::SystemSnapshotWin::OSVersionFull | ( |  | ) | const
| override virtual

Returns the snapshot system’s full operating system version information in string format.

For macOS, the string contains values from the operating system and kernel. A macOS 10.12.1 system snapshot would be identified as `"Mac OS X 10.12.1 (16B2657); Darwin 16.1.0 Darwin Kernel Version 16.1.0: Wed Oct 19 20:31:56 PDT 2016; root:xnu-3789.21.4~4/RELEASE_X86_64 x86_64"`.

Implements crashpad::SystemSnapshot.

## ◆ TimeZone()

void crashpad::internal::SystemSnapshotWin::TimeZone | ( | DaylightSavingTimeStatus * | dst_status,
|  | int * | standard_offset_seconds,
|  | int * | daylight_offset_seconds,
|  | std::string * | standard_name,
|  | std::string * | daylight_name
| ) |  | const
| override virtual

Returns time zone information from the snapshot system, based on its locale configuration and real-time clock.

Parameters

  [out] | dst_status | Whether the location observes daylight saving time, and if so, whether it or standard time is currently being observed.
  [out] | standard_offset_seconds | The number of seconds that the location’s time zone is east (ahead) of UTC during standard time.
  [out] | daylight_offset_seconds | The number of seconds that the location’s time zone is east (ahead) of UTC during daylight saving. time.
  [out] | standard_name | The name of the time zone while standard time is being observed.
  [out] | daylight_name | The name of the time zone while daylight saving time is being observed.

Implements crashpad::SystemSnapshot.

The documentation for this class was generated from the following files:

- snapshot/win/system_snapshot_win.h
- snapshot/win/system_snapshot_win.cc