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)
└─ GsecTasTelemetryKey protobuf namespaces: ContentControllerAPI, ContentControllerAPI.Generic.Request/Response/Notification.
External interfaces
ContentController API
| Message | Purpose |
|---|---|
ContentControllerAPI.Generic.Request.Subscribe | AIN message subscription (shared with all GCIS plugins) |
ContentControllerAPI.Generic.Request.Unsubscribe | Tear down CC subscription |
ContentControllerAPI.Generic.Request.LaunchSession | Session start from CC |
ContentControllerAPI.Generic.Request.ShutdownSession | Session end |
ContentControllerAPI.Generic.Request.InstallApp | App install/patch trigger |
ContentControllerAPI.Generic.Request.Prewarm | App prewarm |
ContentControllerAPI.AppType / AppState | App lifecycle enums |
GCIS Service API
| Message | Purpose |
|---|---|
GCISServiceAPI_GCISRequest_GetPatchingState | Query 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) | Event | Source |
|---|---|---|
| 19:04:52.072 | Secure-load GcpPlugin 1.0.0.0 | NvContainerGcis.log |
| 19:04:52.536 | Init OK; AIN subscription fails error 1 | GcpPluginCurrent.log |
| 19:04:52.883 | PluginStart: TAS session initiated | GcpPluginCurrent.log |
| 19:04:53.025 | GcisConfigData not found → start failure | GcpPluginCurrent.log |
| 19:04:53.045 | Mandatory plugin Starting failure | NvContainerGcis.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 string | Meaning |
|---|---|
GSEC_GCP_Error_FailedToWmFile | Watermark file write on game image failed |
GSEC_GCP_Error_ImageAddCertificateFailed | Authenticode cert injection failed |
GSEC_GCP_Error_WritterCertificateMismatch | Cert thumbprint mismatch |
GSEC_GCP_Error_FailedToLocatePluginConfig | GcisConfigData section missing/malformed |
GSEC_Common_Error_FailedToSubscribeContentControllerAinMessages | CC AIN subscribe failed |
GSEC_Common_Error_MissingSubscribeResultInContentControllerMessage | CC response malformed |
GSEC_Common_Warning_ParseContentControllerAPIGenericMessageFailed | CC protobuf parse error |
Missing GcisConfigData | PluginStart 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 onservices/GCIS/plugins/GcpPlugin.dlllogs/GCIS/GcpPluginCurrent.log,GcpPluginOld.loglogs/GCIS/NvContainerGcis.loglogs/GSP/GSConfiguratorPluginCurrent.log