Skip to content

GcpPlugin.dll

What this program actually does

GcpPlugin.dll is the GameSeat Content Patching (GCP) plugin. It manages seat patching state, interacts with ContentController (CC) for app install/prewarm/session lifecycle messages, and performs Windows image certificate / watermark (WM) file operations on game VHDs during patching workflows.

It subscribes to AIN messages from ContentController and exposes patching queries via GciPlugin's GetPatchingState API. MB endpoint: GcpPlugin. Build: version 1.0 2026-04-07-b253f97.


Architecture / control flow

NvContainerGcis.exe
  └─ GcpPlugin.dll
        ├─ GcisPluginTaskQueue / GSConfigClient
        ├─ ContentController client
        │     ├─ Subscribe / Unsubscribe (AIN messages)
        │     ├─ LaunchSession / ShutdownSession
        │     ├─ InstallApp / Prewarm / PlatformPrewarm
        │     └─ NotificationType dispatch
        ├─ Patching state manager
        │     └─ GetPatchingState (GCIS API + internal)
        ├─ Image/certificate operations
        │     ├─ ImageAddCertificate / ImageGetCertificateData
        │     └─ WM file writes (GSEC_GCP_Error_FailedToWmFile)
        └─ GsecTasTelemetry

Key protobuf namespaces: ContentControllerAPI, ContentControllerAPI.Generic.Request/Response/Notification.


External interfaces

ContentController API

MessagePurpose
ContentControllerAPI.Generic.Request.SubscribeAIN message subscription (shared with all GCIS plugins)
ContentControllerAPI.Generic.Request.UnsubscribeTear down CC subscription
ContentControllerAPI.Generic.Request.LaunchSessionSession start from CC
ContentControllerAPI.Generic.Request.ShutdownSessionSession end
ContentControllerAPI.Generic.Request.InstallAppApp install/patch trigger
ContentControllerAPI.Generic.Request.PrewarmApp prewarm
ContentControllerAPI.AppType / AppStateApp lifecycle enums

GCIS Service API

MessagePurpose
GCISServiceAPI_GCISRequest_GetPatchingStateQuery current patching state (also served by GciPlugin)

Message Bus

  • Endpoint: GcpPlugin
  • CC peer communication for AIN subscribe (all GCIS plugins post AIN subscription to CC)

File system / crypto

  • CreateFileW, SetFileAttributesW, SetFileInformationByHandle — VHD/image patching
  • Authenticode: ImageAddCertificateFailed, WritterCertificateMismatch

Runtime timeline

Time (UTC)EventSource
19:04:52.072Secure-load GcpPlugin 1.0.0.0NvContainerGcis.log
19:04:52.536Init OK; AIN subscription fails error 1GcpPluginCurrent.log
19:04:52.883PluginStart: TAS session initiatedGcpPluginCurrent.log
19:04:53.025GcisConfigData not found → start failureGcpPluginCurrent.log
19:04:53.045Mandatory plugin Starting failureNvContainerGcis.log

First run (18:43): GcpPlugin AIN subscription succeeded (Successfully subscribed CC for AIN messages in GciPluginOld.log context — CC was available).


Failure modes

Error stringMeaning
GSEC_GCP_Error_FailedToWmFileWatermark file write on game image failed
GSEC_GCP_Error_ImageAddCertificateFailedAuthenticode cert injection failed
GSEC_GCP_Error_WritterCertificateMismatchCert thumbprint mismatch
GSEC_GCP_Error_FailedToLocatePluginConfigGcisConfigData section missing/malformed
GSEC_Common_Error_FailedToSubscribeContentControllerAinMessagesCC AIN subscribe failed
GSEC_Common_Error_MissingSubscribeResultInContentControllerMessageCC response malformed
GSEC_Common_Warning_ParseContentControllerAPIGenericMessageFailedCC protobuf parse error
Missing GcisConfigDataPluginStart abort (observed)

Not verified

  • Exact WM file format and target paths on game VHDs.
  • Patching state enum values and transitions.
  • Whether GcpPlugin or GciPlugin is authoritative for GetPatchingState.
  • ContentController peer address on message bus for this seat build.

Evidence

  • strings / RTTI on services/GCIS/plugins/GcpPlugin.dll
  • logs/GCIS/GcpPluginCurrent.log, GcpPluginOld.log
  • logs/GCIS/NvContainerGcis.log
  • logs/GSP/GSConfiguratorPluginCurrent.log

admindesk.top — Reversed & documented from Asgard rig backups and GCIS plugin binaries.