Skip to content

LkmPlugin

LkmPlugin.dll is the game/session execution orchestrator in GCIS. It converts session intent into concrete app actions: setup, launch, restart, stop, and prewarm/resource wiring.

File Info

PropertyValue
FileLkmPlugin.dll
Size15,868,448 bytes
Architecturex64 (AMD64)
Build PDB PathC:\builds\gfn\security\gcis\out\x86_64-windows-release\LkmPlugin\LkmPlugin.pdb
ExportNvPluginGetInfo

Core Responsibilities

  • Translate control-plane requests into runtime app lifecycle actions.
  • Manage game session objects and VM/app binding metadata.
  • Coordinate with content-controller and GFN guard domains before stream activation.
  • Handle restart/recovery logic and return structured result codes.

Observed internal symbols:

  • LkmPluginPidTracker
  • LkmPluginPipeApi
  • LegacyPipeApi

Request/Response API Surface

Request Types

  • GsServiceApi.Request.SetupApp
  • GsServiceApi.Request.LaunchApp
  • GsServiceApi.Request.LaunchAppV2
  • GsServiceApi.Request.StopApp
  • GsServiceApi.Request.RestartApp

Param/Result Types

  • GsServiceApi.LaunchAppParams
  • GsServiceApi.LaunchAppV2Params
  • GsServiceApi.StopAppParams
  • GsServiceApi.RestartAppParams
  • GsServiceApi.SetupAppResponse
  • GsServiceApi.RestartAppResponse
  • GsServiceApi.RestartAppResult

Runtime Flow (How LKM Works)

1) Initialization

  • Parses seat and service configuration.
  • Starts plugin task queue.
  • Registers bus handlers for app/session requests.
  • Initializes process tracking (LkmPluginPidTracker).

2) Setup Phase

  • Validates session and app metadata.
  • Resolves app/package and instance constraints.
  • Produces setup response for downstream services.

Evidence:

  • setupAppResponse
  • GsServiceApi.SetupAppResponsesdkParameters
  • InstanceTypePriorityGroupDef.proto

3) Launch Phase

  • Uses LaunchApp or LaunchAppV2 depending on seat capabilities/policy.
  • Applies VM-bound parameters (vmId observed in request fields).
  • Tracks launched process tree and startup completion.

Evidence:

  • launchAppV2Supported
  • GsServiceApi.Request.LaunchAppV2vmId

4) Runtime/Recovery

  • Handles pause/resume impact indirectly through session APIs.
  • Executes RestartApp on recoverable crashes or policy-driven restarts.

5) Stop and Teardown

  • Issues StopApp and returns terminal result.
  • Coordinates final state transition to avoid hanging sessions.

Protocol Buffers

Proto FilePurpose
GameSessionDef.protoSession model and app/runtime attachment data
GsServiceApiDef.protoRequest/response definitions for app lifecycle APIs
ContentControllerMessagesDef.protoContent availability and launch coordination
SessionShutdownSettingsDef.protoShutdown behavior
InstanceTypePriorityGroupDef.protoCapacity/instance prioritization
GCISCommunicationMessagesDef.protoInter-plugin control messages
GFNGuardMessagesDef.protoPolicy/security integration

App Content States

StateDescription
AppContentStateUnknownUnknown state
AppContentStateAvailableContent available
AppContentStateNotAvailableContent unavailable in current seat context
AppContentStatePatchingApp patch/update in progress
AppContentStateServerMaintenancePlatform/zone maintenance
AppContentStateGameNotFoundInZoneApp not present in selected region
AppContentStateGameNotLinkedAccount linking requirement not satisfied
AppContentStateGameCredentialsMissingRequired credentials unavailable

Legacy Compatibility Layer

LegacyPipeApi indicates a retained older IPC path for transitional stacks.

Associated error indicators:

  • GSEC_LKM_Error_LegacyPipeApiFailedToCreatePipe
  • GSEC_LKM_Error_LegacyPipeApiFailedToReceiveData
  • GSEC_LKM_Error_LegacyPipeApiRequestDeniedAsOspEnabled
  • GSEC_LKM_Error_LegacyPipeApiThreadFailedToStart

Interpretation:

  • Keep this path documented for old integrations.
  • Prefer modern message-bus + GS2/GCIS request paths in current deployments.

Error Codes

LkmPlugin-aligned result groups:

RangeCategory
0x80030100 to 0x80030115Session/app lifecycle failures
0x80030120 to 0x80030124Maintenance/service-side gating

Selected SRC_* outcomes:

CodeDescription
SRC_TargetAppLaunchFailureLaunch path failed
SRC_TargetAppNotFoundApp package/binary missing
SRC_TargetAppExitedEarly/unexpected process exit
SRC_SeatInitializationFailedSeat setup failed before stream-ready
SRC_UnableToFindResourcesResource allocation failed
SRC_ZoneInMaintenanceModeZone unavailable by policy

Dependencies

WS2_32, IPHLPAPI, libprotobuf, VERSION, RPCRT4, KERNEL32, SHELL32, ole32, ADVAPI32, MSVCP140, VCRUNTIME140

Operational Debug Checklist

  1. Validate setup response payload before launch (sdkParameters, app/vm fields).
  2. Verify LaunchApp vs LaunchAppV2 path selection and support flags.
  3. For restart loops, inspect RestartAppResult and PID tracking events.
  4. If legacy callers exist, verify whether policy intentionally blocks LegacyPipeApi.

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