← Back to parser

SRUM tables explained: AppResource, Network, Energy, Push

SRUDB.dat is an ordinary ESE database. Most of its tables are named with curly-brace GUIDs — each GUID identifies a SRUM extension that registers itself with the service to record one slice of telemetry. The GUIDs are stable across Windows builds, so a parser that recognises them can read the data regardless of locale, service pack, or feature update.

The catalog

GUIDCommon name
{D10CA2FE-6FCF-4F6D-848E-B2E99266FA89}Application Resource Use
{D10CA2FE-6FCF-4F6D-848E-B2E99266FA89}LTApplication Resource Use (Long Term)
{973F5D5C-1D90-4944-BE8E-24B94231A174}Network Data Usage
{DD6636C4-8929-4683-974E-22C046A43763}Network Connectivity
{FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}Energy Usage
{FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}LTEnergy Usage (Long Term)
{D10CA2FE-6FCF-4F6D-848E-B2E99266FA8F}Push Notifications

Plus the control tables:

  • SruDbIdMapTable — translates integer AppId/UserId to paths and SIDs.
  • SruDbCheckpointTable — internal flush state.

The ESE system tables (MSysObjects, MSysObjids, MSysLocales) are the engine's own catalog. Skim them; do not pivot on them.

Application Resource Use {D10CA2FE-…FA89}

Per-application activity sampled hourly. The single most useful table for "did this run, when, under whom".

Key columns:

  • TimeStamp — bucket boundary (OLE variant date, 8-byte float).
  • AppId, UserId — foreign keys into SruDbIdMapTable.
  • ForegroundCycleTime, BackgroundCycleTime — CPU cycles, not seconds.
  • FaceTime — time the UI was visible to the user.
  • ForegroundBytesRead, ForegroundBytesWritten, ForegroundNumReadOperations, NumWriteOperations, NumberOfFlushes — disk I/O while focused.
  • Background variants of all the I/O columns.

The LT sibling aggregates the same rows weekly and survives up to a year. Granularity drops; reach extends.

Network Data Usage {973F5D5C-…}

Per-application bytes per network profile. The exfiltration table.

  • InterfaceLuid — Windows LUID for the interface.
  • L2ProfileId — opaque ID; resolve against HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles in the registry for the SSID or wired name.
  • L2ProfileFlags — bitmask: 0x100 wired, 0x200 wireless, 0x400 WWAN.
  • BytesSent, BytesRecvd — counters since last sample, per process.

Combined with AppId resolution this answers "how many MB did chrome.exe send over the home Wi-Fi between 14:00 and 15:00?". For an exfiltration-specific workflow see detecting data exfiltration with SRUM.

Network Connectivity {DD6636C4-…}

When the system attached to and detached from each network.

  • ConnectStartTime — FILETIME of association (precise to the second).
  • ConnectedTime — duration in seconds.
  • InterfaceLuid, L2ProfileId, L2ProfileFlags — as above.

Places a device on a specific network at a specific moment. Useful for correlating with corporate Wi-Fi controller logs and VPN concentrator records.

Energy Usage {FEE4E14F-…}

Battery and power-source telemetry. Sampled on every transition.

  • EventTimestamp — FILETIME of the transition.
  • StateTransition — AC plug/unplug, sleep enter/exit, low-battery.
  • ChargeLevel, CycleCount, ConfigurationHash.
  • DesignedCapacity, FullChargedCapacity (mWh).
  • ActiveAcTime, CsAcTime, ActiveDcTime, CsDcTime — time-on counters per power source.

The LT variant tracks battery health degradation over months — also useful for proving "the laptop was never charged at HQ" types of claim.

Push Notifications {D10CA2FE-…FA8F}

For Modern apps using the Windows Push Notification Service.

  • NotificationType — toast, tile, badge, raw.
  • PayloadSize — bytes of the notification body.
  • NetworkType — which interface delivered it.

Less frequently load-bearing in a typical investigation, but the notification cadence sometimes reveals a Modern app that was running in the background when nothing else logged it.

SruDbIdMapTable

Every data table holds AppId and UserId as small integers. Joining to SruDbIdMapTable turns them human-readable.

ColumnMeaning
IdType0 = service, 1 = app, 2 = SID, 3 = user (varies by build)
IdIndexThe integer used by the data tables
IdBlobUTF-16 path for apps, binary SID for users

App paths in IdBlob come in two shapes:

  • A full file path, e.g. \\?\C:\Users\suspect\loader.exe.
  • A modern AUMID, e.g. Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge.

Binary SIDs decode using the standard SID format; map to user names via HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList from the registry.

Further reading

Frequently asked questions

How many tables does SRUDB.dat contain?

Typically 11 to 14, including ESE system tables (MSysObjects, MSysObjids, MSysLocales), SRUM control tables (SruDbIdMapTable, SruDbCheckpointTable), and 6–8 data tables named with GUIDs.

What is SruDbIdMapTable?

It resolves the small integer AppId and UserId foreign keys used across every data table back to either an application identifier (full path or AUMID for Modern apps) or a binary SID for Windows user accounts.

Why are the data tables named with GUIDs?

Each SRUM extension registers itself with a GUID. The names are stable across Windows builds, so any tool that knows the GUID can parse the corresponding table regardless of locale or service pack.

How long are rows retained?

Around 30 days for the short-term tables and up to a year for the “LT” long-term variants. The exact retention is governed by registry policy under HKLM\System\CurrentControlSet\Control\WMI\AutoLogger\SRUM.

Are timestamps in FILETIME or OLE format?

The TimeStamp column is an OLE variant date (8-byte float). Energy and Network Connectivity tables use 64-bit FILETIME for their event timestamps.