# Fout- en diagnosecodes
> Vertaling van de [oorspronkelijke Engelse pagina](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/docs/reference/errors.md) voor OmsiLaunch 0.1.0-beta3. De Engelse pagina is normatief: bij verschillen gelden de Engelse pagina en de code.
Deze pagina is de normatieve referentie voor elke code in `PublicErrorCodes` (`src/OmsiLaunch.Api/PublicErrorCodes.cs`): 142 `OL_E_`-foutcodes en één `OL_W_`-waarschuwing, gegroepeerd per catalogus-categorie, plus de informatieve diagnosecodes die geen fouten zijn. Per code staat beschreven waar de huidige code hem genereert, wat hij betekent, hoe hij bij je terechtkomt (gegooide exceptie, resultaatveld, diagnosemelding, antwoord van het control plane of CLI-envelope) en wat je moet doen. De betekenissen zijn afgeleid van de plaatsen waar de code wordt gegenereerd; waar een code wel gedefinieerd is maar momenteel door geen enkel pad wordt gegenereerd, vermeldt de pagina dat.
Gerelateerde pagina's: [openbare API](https://omsilaunch.omsimods.com.br/nl/docs/reference/public-api/index.md), [exitcodes](https://omsilaunch.omsimods.com.br/nl/docs/reference/exit-codes/index.md), [LaunchSpec](https://omsilaunch.omsimods.com.br/nl/docs/reference/launchspec/index.md), [sessielevenscyclus](https://omsilaunch.omsimods.com.br/nl/docs/concepts/session-lifecycle/index.md), [transacties en recovery](https://omsilaunch.omsimods.com.br/nl/docs/concepts/transactions-and-recovery/index.md), [lokaal control plane](https://omsilaunch.omsimods.com.br/nl/docs/reference/local-control/index.md), [runtimebesturing](https://omsilaunch.omsimods.com.br/nl/docs/reference/runtime-control/index.md), [sessieprofielen](https://omsilaunch.omsimods.com.br/nl/docs/reference/session-profiles/index.md), [permanente plugin](https://omsilaunch.omsimods.com.br/nl/docs/concepts/permanent-plugin/index.md).
## Hoe codes bij je terechtkomen
| Kanaal | Betekenis |
| --- | --- |
| Gegooid | Een exceptie waarvan `Message` met de code begint (`InvalidOperationException`, `IOException`, `TimeoutException`, `InvalidDataException`, `FileNotFoundException`, `ArgumentException`, `SessionProfileException`). De CLI haalt de code uit het bericht en zet hem om naar een exitcode (`CliProgram.Classify`). |
| Plandiagnose | Een `LaunchDiagnostic` in `SessionPlan.Diagnostics`; elke `OL_E_`-code maakt `IsRunnable` false (CLI: plan `NOT RUNNABLE`, exit 1). |
| Sessiediagnose | Een `LaunchDiagnostic` in `SessionStatus.Diagnostics`; de sessiestatus is `Failed` (CLI exit 1). `OL_E_START_SESSION`, `OL_E_PROCESS_SUPERVISION` en `OL_E_RESTORE_FAILED` verpakken een binnenste code in hun bericht. |
| Runtimeresultaat | `RuntimeCommandResult.ErrorCode` met `Succeeded = false`. |
| Runtimedetail | `RuntimeCommandResult.ErrorCode = OL_E_RUNTIME_OPERATION_FAILED` en de specifieke code als eerste token van `Values["detail"]` (met `Values["exception"]`). Op deze manier wordt elke `InvalidOperationException`/`ArgumentException`-code aan de pluginkant doorgegeven. |
| Control-antwoord | `ErrorCode` van een antwoord van het lokale control plane (`LocalControlResponse`). |
| CLI-envelope | `error.code` in de `--json`-envelope, of `: ` op de console; de exitcode wordt vermeld. |
| Telemetrie | Een naam van een runtime-event die de host omzet naar een sessiediagnose. |
## Cli
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_CANCELLED` | `CliProgram.Classify` | Een `OperationCanceledException` is ontsnapt (Ctrl+C of een geannuleerde wachtactie van de client). | CLI-envelope, exit 7 | Voer de opdracht opnieuw uit. |
| `OL_E_INTERNAL` | `CliProgram.Classify` | Een exceptie zonder `OL_E_`-code is ontsnapt: ongeldige `/spec`-JSON, een verplicht spec-lid dat null is, een onverwachte fout. | CLI-envelope, exit 10 | Lees het bericht en `\.omsilaunch\diagnostics\-host.log`; corrigeer de invoer; meld het als het onverklaarbaar is. |
| `OL_E_TIMEOUT` | `CliProgram.Classify`; `LocalControlPlane.TryRequestAsync` | Een `TimeoutException` zonder code is ontsnapt; of de local-control-client was verbonden met een eigenaar die niet binnen de timeout antwoordde (de eigenaar bestaat, dus dit wordt niet gemeld als `OL_E_NO_ACTIVE_SESSION`). (Timeouts van de mailbox dragen in plaats daarvan `OL_E_RUNTIME_REQUEST_TIMEOUT`.) | CLI-envelope, control-antwoord; exit 5 vanuit `Classify`, exit 7 voor een control-antwoord | Probeer het opnieuw; controleer of OMSI en de eigenaar reageren. |
| `OL_E_WINDOWS_HOST_MISSING` | `CliProgram.RunAsync` (`/silent`) | `OmsiLaunchW.exe` staat niet naast `OmsiLaunch.exe`. | CLI-envelope, exit 7 | Installeer het pakket opnieuw. |
| `OL_E_WINDOWS_HOST_START_FAILED` | `CliProgram.RunAsync` (`/silent`) | `Process.Start` van `OmsiLaunchW.exe` leverde geen proces op. | CLI-envelope, exit 7 | Controleer de pakketbestanden en de rechten; voer de opdracht uit zonder `/silent` om de fout te zien. |
## Compatibiliteit
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_BUILD_VALIDATION_FAILED` | `OmsiLaunchService.ApplyTelemetry` bij `plugin.build.invalid` | De build-controle van de plugin binnen het proces (profiel `Omsi23004_692EBFBF` plus de native VMT-probe) is mislukt, hoewel de host het uitvoerbare bestand had geaccepteerd, bijvoorbeeld een Steam-LAA-build op de allow-list waarvan de geheugenindeling afwijkt, of een gepatchte OMSI. | Sessiediagnose (`Failed`) | Gebruik de runtime-gevalideerde build; zie [compatibiliteit](https://omsilaunch.omsimods.com.br/nl/docs/reference/compatibility/index.md). |
| `OL_E_UNSUPPORTED_BUILD` | `SessionPlanner` (`omsi.profile.OMSI23004` niet beschikbaar) | `Omsi.exe` ontbreekt, of de grootte/SHA-256 ervan komt niet overeen met de vingerafdruk van het profiel en ook niet met de allow-list. | Plandiagnose | Installeer de ondersteunde build OMSI 2.3.004. |
| `OL_E_UNSUPPORTED_OPERATING_SYSTEM` | `SessionPlanner` (`runtime.current-windows-x64` niet beschikbaar); wordt ook gegooid door `CurrentWindowsX64Platform.ValidateCurrent`, die de service niet aanroept | Geen Windows 10 of later, of het besturingssysteem of het hostproces is niet x64. | Plandiagnose (CLI exit 3 wanneer gegooid) | Gebruik 64-bits Windows 10 of later. |
| `OL_E_UNSUPPORTED_OS_ARCHITECTURE` | Alleen `CurrentWindowsX64Platform.ValidateCurrent` | De architectuur van het besturingssysteem of de host is niet x64. De service roept `ValidateCurrent` niet aan; er is momenteel geen pad dat deze code genereert. | Alleen door die methode gegooid (`PlatformNotSupportedException`) | Zie de broncode `src/OmsiLaunch.Process/RuntimePlatform.cs`. |
## Content
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_ENTRYPOINT_NOT_FOUND` | `LaunchValidation` | NEW_MAP zonder `EntrypointIdentity` en met `PresentedEntrypointIndex` niet ingesteld of negatief. | Plandiagnose | Stel `PresentedEntrypointIndex` in (`/entrypoint-index:`); vraag de instappunten op met `/list:entrypoints /map:`. |
| `OL_E_ENTRYPOINT_REQUIRED` | `SessionPlanner` (`world.presented-entrypoint` niet beschikbaar) | De NEW_MAP-kaart is gevonden, maar er is geen getoonde index en geen identiteit. Gaat altijd samen met `OL_E_ENTRYPOINT_NOT_FOUND`. | Plandiagnose | Idem. |
| `OL_E_HOF_NOT_FOUND` | `SessionPlanner` | `PlayerVehicle.Hof` is geen geïnstalleerd `Vehicles\...\*.hof`-bestand. | Plandiagnose | Gebruik een identiteit uit `/list:hofs`. (Velden van het spelersvoertuig zijn op deze build hoe dan ook niet uitvoerbaar.) |
| `OL_E_MAP_NOT_FOUND` | `LaunchValidation`; `SessionPlanner` | Validatie: NEW_MAP met `MapIdentity` niet ingesteld of niet in de vorm `maps\\global.cfg`. Planner: de kaart is niet geïnstalleerd. | Plandiagnose | Gebruik een identiteit uit `/list:maps`. |
| `OL_E_NOT_FOUND` | `CliProgram.Classify` | Een `FileNotFoundException`/`DirectoryNotFoundException` zonder code is ontsnapt, bijvoorbeeld `/list:repaints` met een onbekende `/vehicle-scope`, of `/list:entrypoints` met een onbekende `/map`. | CLI-envelope, exit 6 | Corrigeer de identiteit. |
| `OL_E_REPAINT_NOT_FOUND` | `SessionPlanner` | `PlayerVehicle.Repaint` is geen `.cti`-item van het model (alleen gecontroleerd als `Model` is ingesteld). | Plandiagnose | Gebruik een identiteit uit `/list:repaints /vehicle-scope:`. |
| `OL_E_SITUATION_MAP_NOT_FOUND` | `SessionPlanner` | De kaart waarnaar de gekozen `.osn` verwijst, is niet geïnstalleerd. | Plandiagnose | Installeer de kaart of kies een andere situatie. |
| `OL_E_SITUATION_NOT_FOUND` | `LaunchValidation`; `SessionPlanner` | SAVED_SITUATION zonder `SituationIdentity`, of de `.osn` is niet geïnstalleerd. | Plandiagnose | Gebruik een identiteit uit `/list:situations`. |
| `OL_E_VEHICLE_NOT_FOUND` | `SessionPlanner` | `PlayerVehicle.Model` is geen geïnstalleerd `Vehicles\...\*.bus`-bestand. | Plandiagnose | Gebruik een identiteit uit `/list:vehicles`. |
## Installatie
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_INSTALLATION_BUSY` | `InstallationLease.Acquire`; `OmsiLaunchService.RecoverPendingAsync`; `FileConfigurationTransaction.RestorePendingAsync` | De installatielease (`Local\OmsiLaunch.Installation.`) wordt vastgehouden door een andere eigenaar in deze aanmeldsessie, of een in het journal vastgelegd OMSI-proces (PID + aanmaaktijd + pad van het uitvoerbare bestand; of een willekeurige `Omsi.exe` uit de installatiemap bij een journal voorbij `HandoffCreated` zonder PID) is nog actief. | Start: sessiediagnose via `OL_E_START_SESSION`. Recovery: gegooid (`InvalidOperationException` / `IOException`). CLI exit 7. | Stop de andere eigenaar (`session stop`) of wacht tot OMSI is afgesloten, en probeer het dan opnieuw of voer `/recover` uit. |
| `OL_E_INSTALLATION_NOT_FOUND` | `LaunchValidation` | `Installation.RootPath` is leeg. | Plandiagnose | Geef de installatiemap op. |
| `OL_E_INSTALLATION_NOT_WRITABLE` | `SessionPlanner` (`transaction.exact-restore` niet beschikbaar); ook `ValidateCurrent` | De installatiemap bestaat niet, heeft het kenmerk alleen-lezen of heeft geen map `plugins\`. | Plandiagnose | Verwijs naar een echte, beschrijfbare OMSI-installatie. |
| `OL_E_PERMANENT_PLUGIN_HASH_MISMATCH` | `RuntimeArtifactSet.ValidateInstalled` (plan en start) | Een geïnstalleerd `plugins\OmsiLaunch.*`-bestand wijkt af van de hash in `release-manifest.json` (of, zonder manifest, van de referentie-closure). | Plandiagnose (plan niet uitvoerbaar, CLI exit 1); sessiediagnose via `OL_E_START_SESSION` alleen als de bestanden tussen planning en start veranderen | Installeer het OmsiLaunch-pakket opnieuw, zodat `plugins\` en het manifest overeenkomen. |
| `OL_E_PERMANENT_PLUGIN_MANIFEST_INCOMPLETE` | `RuntimeArtifactSet.ValidateInstalled` (plan en start) | Het manifest heeft geen item voor een vereist pluginbestand. | Plandiagnose; sessiediagnose via `OL_E_START_SESSION` bij dezelfde race als hierboven | Installeer het pakket opnieuw. |
| `OL_E_PERMANENT_PLUGIN_MISSING` | `RuntimeArtifactSet.ValidateInstalled` (plan en start) | Een vereist `plugins\OmsiLaunch.*`-bestand ontbreekt in de OMSI-installatie, of een `plugins/`-bestand dat in `release-manifest.json` staat, is niet geïnstalleerd. | Plandiagnose; sessiediagnose via `OL_E_START_SESSION` bij dezelfde race als hierboven | Installeer de plugin-closure van de permanente plugin ([installatie](https://omsilaunch.omsimods.com.br/nl/docs/getting-started/installation/index.md)). |
| `OL_E_PLATFORM_CAPABILITY_MISSING` | Alleen `CurrentWindowsX64Platform.ValidateCurrent` | `CurrentPlatformSupported` false. Wordt niet door de service aangeroepen; er is momenteel geen pad dat deze code genereert. | Alleen door die methode gegooid | Zie de broncode. |
| `OL_E_RELEASE_MANIFEST_INVALID` | `ReleaseManifest.TryReadPluginHashes` / `ParsePluginHashes` | `release-manifest.json` is leeg, is geen JSON, heeft geen `files`-array, of heeft een item zonder `path`/`sha256`, een hash die niet uit 64 hexadecimale cijfers bestaat, een pad dat absoluut is, `:` bevat, een leeg segment, een `.`- of `..`-segment bevat, of een pad dat twee keer voorkomt (hoofdletterongevoelig vergeleken, `/` en `\` gelijkwaardig). Een UTF-8-BOM wordt geaccepteerd. | Plan: verpakt in `OL_E_RUNTIME_ARTIFACT_MISSING`; start: via `OL_E_START_SESSION` | Installeer het pakket opnieuw. |
## InvalidArgument
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_INVALID_ARGUMENT` | `LaunchValidation`; `CliInput.Parse`/`Classify` | Validatie: `Date.Value`/`Time.Value` ingesteld terwijl de modus niet `Explicit` is. CLI: onbekende vlag, ontbrekende waarde, ongeldig geheel getal of bereik, `/saved` gecombineerd met `/map`/`/entrypoint`, onbekende opdrachtroute, elke `ArgumentException`/`FormatException` zonder code. | Plandiagnose; CLI-envelope exit 2 | Corrigeer het argument. |
| `OL_E_INVALID_SETTING_VALUE` | `ConfigurationCatalog.CreatePatch` (start) | De waarde van een semantische instelling valt buiten het bereik, is geen booleaanse waarde, zit niet in de toegestane set of is ongeldig opgebouwd (`graphics.particles` vereist vier velden). Waarden worden niet gevalideerd tijdens het plannen. | Sessiediagnose via `OL_E_START_SESSION` | Gebruik een waarde uit de [tabel met instellingen](https://omsilaunch.omsimods.com.br/nl/docs/reference/launchspec/index.md#environmentspec). |
| `OL_E_SETTING_NOT_WRITABLE` | `SessionPlanner`; `CliInput.BuildSpecAsync`; `BuildTransactionalOverlays` | De sleutel bestaat, maar is niet beschrijfbaar (`advanced.multithreadingCalculate`, `advanced.multithreadingTextureLoad`, `graphics.texture`, `graphics.textureFilter`). | Plandiagnose; CLI exit 2 | Verwijder de sleutel. |
| `OL_E_UNKNOWN_SETTING` | `SessionPlanner`; `CliInput.BuildSpecAsync`; `BuildTransactionalOverlays` | De sleutel staat niet in `ConfigurationCatalog`. | Plandiagnose; CLI exit 2 | Gebruik een sleutel uit de catalogus. |
## LaunchSpec
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_SPEC_INVALID` | `LaunchSpecJson.Parse` | De root is geen JSON-object, of de deserialisatie leverde geen record op. | Gegooid (`InvalidDataException`), CLI exit 2 | Corrigeer het bestand ([LaunchSpec](https://omsilaunch.omsimods.com.br/nl/docs/reference/launchspec/index.md)). |
| `OL_E_SPEC_NOT_FOUND` | `LaunchSpecJson.LoadAsync` | Het `/spec`-bestand bestaat niet. | Gegooid (`FileNotFoundException`), CLI exit 6 | Controleer het pad. |
| `OL_E_SPEC_TOO_LARGE` | `LaunchSpecJson.LoadAsync` | Het bestand is groter dan 1 MiB. | Gegooid (`InvalidDataException`), CLI exit 2 | Maak het bestand kleiner. |
| `OL_E_SPEC_UNKNOWN_PROPERTY` | `LaunchSpecJson.Validate` | Een lid dat op die positie geen openbare property van het record is; bericht `OL_E_SPEC_UNKNOWN_PROPERTY: $.Path.Name`. | Gegooid (`InvalidDataException`), CLI exit 2 | Verwijder het lid of geef het een andere naam. |
## LocalControl
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_CONTROL_COMMAND_UNKNOWN` | Handler van de eigenaar (`OwnerSession`) | De opdracht is niet `session.status`, `session.events`, `session.stop` of `runtime.execute` met een `operation`-argument. | Control-antwoord; CLI exit 7 | Gebruik een ondersteunde opdracht. |
| `OL_E_CONTROL_FAILED` | CLI-client (`ReportForwarded`, `CliEventWatch`) | De eigenaar antwoordde `Ok = false` zonder foutcode. | CLI-envelope, exit 7 | Lees het bericht; controleer de console/diagnostiek van de eigenaar. |
| `OL_E_CONTROL_HANDLER_FAILED` | `LocalControlPlane.ServeAsync` | De handler van de eigenaar gooide een exceptie waarvan het bericht geen `OL_E_`-code bevat (bijvoorbeeld omdat de sessie al gesloten was), of het antwoord van de handler kon niet worden geserialiseerd. | Control-antwoord | Lees `session status`; start de eigenaar opnieuw als die verdwenen is. |
| `OL_E_CONTROL_MESSAGE_INVALID` | `LocalControlPlane` (beide kanten) | Lengteprefix negatief of groter dan 64 KiB (inclusief een te groot request-frame), leeg frame, JSON `null`, een request zonder `Command`, of JSON die niet gedecodeerd kon worden. | Control-antwoord / CLI-envelope | Gebruik het gedocumenteerde protocol ([lokaal control plane](https://omsilaunch.omsimods.com.br/nl/docs/reference/local-control/index.md)). |
| `OL_E_CONTROL_MESSAGE_TOO_LARGE` | `LocalControlPlane.TryRequestAsync` (client) | Het eigen geserialiseerde request van de client is groter dan 64 KiB. Wordt aan de aanroeper gemeld; er wordt niets verzonden. | Control-antwoord / CLI-envelope | Maak het request kleiner. |
| `OL_E_CONTROL_RESPONSE_TOO_LARGE` | `LocalControlPlane.ServeAsync` (eigenaar) | Het antwoord van de eigenaar past niet in het frame van 64 KiB. De eigenaar antwoordt met deze getypeerde fout in plaats van het antwoord te laten vallen. `session.status` en `session.events` bereiken deze fout nooit: hun eventgeschiedenis wordt vanaf het oudste event ingekort tot ze past. | Control-antwoord / CLI-envelope | Probeer het opnieuw; lees events vaker uit. |
| `OL_E_CONTROL_PROTOCOL` | `LocalControlPlane`, `TryRequestBoundAsync` | De `ProtocolVersion` van het request is niet `0.1`; het antwoord van de eigenaar kon niet worden gedecodeerd of was leeg; de eigenaar sloot de verbinding zonder te antwoorden of de verbinding werd verbroken nadat ze tot stand was gebracht; de eigenaar meldde geen `SessionId`. | Control-antwoord / CLI-envelope | Zorg dat de versies van client en eigenaar overeenkomen; lees `session status`. |
| `OL_E_CONTROL_SESSION_MISMATCH` | Handler van de eigenaar | `session.stop` of `runtime.execute` zonder een `session_id` die gelijk is aan de actieve sessie. | Control-antwoord; CLI exit 7 | Lees eerst `session.status` en koppel het request daaraan (de CLI doet dit automatisch). |
## Overig
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_PLAN_NOT_RUNNABLE` | `OmsiLaunchService.StartSessionAsync` | Het meegegeven plan heeft `IsRunnable = false`, of de herplanning bij de start is niet uitvoerbaar (`Omsi.exe` gewijzigd, content verwijderd, plugin-closure ontbreekt); het bericht vermeldt de huidige `OL_E_`-codes. | Gegooid (`InvalidOperationException`); CLI exit 1 | Plan opnieuw en los de vermelde diagnosemeldingen op. |
## Presentatie
Allemaal gegenereerd door `SessionVisualAssets` (`src/OmsiLaunch.Core/SessionVisualAssets.cs`). Tijdens het plannen worden ze verpakt in `OL_E_SESSION_PRESENTATION_INVALID` (het bericht bevat de code); bij de start komen ze naar buiten via `OL_E_START_SESSION`.
| Code | Betekenis / typische oorzaak | Wat te doen |
| --- | --- | --- |
| `OL_E_ITX_PROFILE_INVALID` | Het `.itx`-bestand is leeg, heeft een oneven aantal niet-lege regels, of een URL-regel is geen absolute `http`/`https`-URL. | Gebruik paren van een URL-regel en een doelregel. |
| `OL_E_ITX_PROFILE_MISSING` | `OverrideProfilePath` (opgelost ten opzichte van de werkmap van het proces) bestaat niet. Gegooid als `FileNotFoundException`. | Geef een bestaand `.itx`-pad op. |
| `OL_E_ITX_PROFILE_REQUIRED` | `InternetTextures.Mode` is `Override` zonder `OverrideProfilePath`. CLI exit 2 wanneer gegooid. | Geef `/internet-textures-profile:` op. |
| `OL_E_ITX_TARGET_OUTSIDE_TEXTURE_PATH` | Een doelregel is absoluut, bevat `..`, begint met `\`, verwijst naar een locatie buiten de installatie, mist een `Texture\`-component of loopt via een junction/symlink. | Gebruik relatieve doelen van de vorm `Texture\...`. |
| `OL_E_SPLASH_ASSET_DIRECTORY_MISSING` | `CustomAssetDirectory` bestaat niet. | Corrigeer de map. |
| `OL_E_SPLASH_ASSET_MISSING` | `ENG.bmp` of `.bmp` ontbreekt in de assetmap, of een meegeleverde `assets\splash\.bmp` ontbreekt bij het vullen van `.omsilaunch\assets\splash`. | Lever de BMP-bestanden aan / installeer het pakket opnieuw. |
| `OL_E_SPLASH_FORMAT_UNSUPPORTED` | Een BMP voor het opstartscherm is geen 24-bits `BM`-bitmap van 640×480. | Converteer de afbeelding. |
## Proces
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_PROCESS_CLEANUP_FAILED` | `OmsiLaunchService` (foutpaden bij startfout en supervisor) | Het beëindigen van of wachten op OMSI tijdens het opruimen na een fout gooide een exceptie; het binnenste bericht volgt. | Sessiediagnose (toegevoegd aan een `Failed`-sessie) | Zorg dat er geen `Omsi.exe` meer actief is, en voer daarna `/recover` uit als er een journal openstaat. |
| `OL_E_PROCESS_CREATION_TIME_FAILED` | `CurrentWindowsX64Platform.StartAsync` | `GetProcessTimes` mislukte direct na `CreateProcessW` (`Win32=`); het proces wordt beëindigd. | Sessiediagnose via `OL_E_START_SESSION` | Probeer het opnieuw; controleer antivirus/rechten. |
| `OL_E_PROCESS_EXITED_EARLY` | `OmsiLaunchService.SuperviseAsync` | OMSI werd afgesloten vóór `gameplay.entered` (crash, een foutdialoogvenster van OMSI werd gesloten, het venster werd gesloten). | Sessiediagnose (`Failed`); het herstel wordt uitgevoerd | Controleer de eigen logs van OMSI en `logfile.txt`; bekijk `RuntimeEvents` voor het laatste plugin-event. |
| `OL_E_PROCESS_START_FAILED` | `CurrentWindowsX64Platform.StartAsync` | `CreateProcessW` is mislukt (`Win32=` in het bericht). | Sessiediagnose via `OL_E_START_SESSION` | Los de Win32-fout op (ontbrekend bestand, toegang geweigerd, beleid). |
| `OL_E_PROCESS_SUPERVISION` | `OmsiLaunchService.SuperviseAsync` | De supervisorlus gooide een exceptie (telemetrie lezen, wachten op/beëindigen van het proces, journal schrijven); OMSI wordt beëindigd en er wordt geprobeerd te herstellen. | Sessiediagnose (`Failed`) | Lees het binnenste bericht en de hostlog. |
| `OL_E_PROCESS_TERMINATE_FAILED` | `CurrentWindowsX64Platform.Terminate` | `TerminateProcess` is mislukt (`Win32=`). | Binnen berichten van `OL_E_PROCESS_SUPERVISION` / `OL_E_PROCESS_CLEANUP_FAILED` | Beëindig OMSI handmatig en voer daarna `/recover` uit. |
| `OL_E_PROCESS_WAIT_FAILED` | `CurrentWindowsX64Platform.WaitForExitAsync` | `WaitForSingleObject` op de proceshandle is mislukt. | Binnen berichten van `OL_E_PROCESS_SUPERVISION` / `OL_E_PROCESS_CLEANUP_FAILED` | Idem. |
## Runtime
"Runtimedetail" betekent `ErrorCode = OL_E_RUNTIME_OPERATION_FAILED` met de code aan het begin van `Values["detail"]`.
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_CAMERA_PRESET_FAMILY_UNSUPPORTED` | `OmsiCameraLockWriter` | `camera.lock` met `preset` terwijl `family` 2 (extern) of 3 (kaart) is; presets bestaan alleen voor chauffeur (0) en passagier (1). | Runtimedetail | Laat `preset` weg of gebruik family 0/1. |
| `OL_E_DATE_TIME_APPLY_FAILED` | `LaunchValidation` | `Date`/`Time`-modus `Explicit` zonder waarde of met componenten buiten het bereik. De naam is historisch; het is een validatiefout tijdens het plannen. | Plandiagnose | Corrigeer de waarde (en houd er rekening mee dat een expliciete datum/tijd op deze build niet uitvoerbaar is). |
| `OL_E_MAKEVEHICLE_BUS_NOT_FOUND` | `CurrentRuntimeControl.MakeBasicRoadVehicle` | `road-vehicles.spawn`: het `.bus`-pad bestaat niet onder de werkmap van OMSI (gecontroleerd vóór de native aanroep, zodat OMSI geen fallback kan invullen). | Runtimedetail | Gebruik een identiteit uit `vehicles list`/`/list:vehicles`. |
| `OL_E_MAKEVEHICLE_DELTA_MULTIPLE` | idem | De native MakeVehicle-aanroep heeft de wegvoertuigcollectie met meer dan één object gewijzigd. | Runtimedetail (`native_status`, aantallen in het bericht) | Meld het; de aangemaakte objecten blijven bestaan tot de sessie eindigt. |
| `OL_E_MAKEVEHICLE_DELTA_ZERO` | idem | De collectie is niet gewijzigd; OMSI heeft het voertuig zonder melding geweigerd. | Runtimedetail | Controleer het `.bus`-bestand; probeer een ander model. |
| `OL_E_MAKEVEHICLE_NATIVE_FAILED` | idem | Elke andere native status dan nul. | Runtimedetail | Meld het, met de aantallen uit het bericht. |
| `OL_E_PLACE_RANDOM_BUS_FAILED` | `CurrentRuntimeControl.PlaceRandomBus` | De geprofileerde PlaceRandomBus-aanroep gaf een foutstatus terug. | Runtimedetail | Probeer het opnieuw zodra de gameplay stabiel is; meld het. |
| `OL_E_RUNTIME_ARGUMENT_REQUIRED` | `PublicCapabilityRegistry.ValidateRuntimeArguments`; controles aan de pluginkant (`time.set` zonder `hour`/`minute`/`second`; `camera.set` zonder `family`/`field_of_view`; `camera.lock` zonder parseerbare `family`; voertuig-/curve-operaties) | Een vereist argument ontbreekt of is leeg. | Runtimeresultaat (register; CLI exit 2) of runtimedetail (plugin) | Geef het argument op ([runtimebesturing](https://omsilaunch.omsimods.com.br/nl/docs/reference/runtime-control/index.md)). |
| `OL_E_RUNTIME_ARTIFACT_MISSING` | `OmsiLaunchService.PlanSessionAsync` | De referentiemap/-bestanden van de plugin-closure of de native brug die in `OmsiLaunchRuntimePaths` zijn opgegeven, kunnen niet worden geladen (kan `OL_E_RELEASE_MANIFEST_INVALID` verpakken). | Plandiagnose | Voer uit vanuit een intact pakket. |
| `OL_E_RUNTIME_BASELINE_UNAVAILABLE` | `RuntimeBatch` (`/runtime-write-batch`, INTERNAL harness) | De baseline-`time.read`/`camera.read` is mislukt, dus de schrijftest is overgeslagen. | Alleen batchartefact | Niet bedoeld voor gebruikers. |
| `OL_E_RUNTIME_BUS_IDENTITY_INVALID` | `CurrentRuntimeControl.ValidateBasicBusIdentity` | `model` is leeg, langer dan 240 tekens, bevat NUL of `..`, begint niet met `Vehicles\` of eindigt niet op `.bus`. | Runtimedetail | Geef `Vehicles\\.bus` op. |
| `OL_E_RUNTIME_CHANNEL_BUSY` | geen (behouden voor compatibiliteit) | Wordt niet meer gegenereerd. Eerdere builds genereerden deze code wanneer een geannuleerd request in het slot achterbleef; elk eindpad van een request zet het slot nu terug, en een achtergebleven request of antwoord dat aan het begin van een nieuw request wordt aangetroffen, wordt gewist. | — | — |
| `OL_E_RUNTIME_CHANNEL_CLOSED` | `OmsiLaunchService.LiveSession.RequestRuntimeAsync` | De mailbox is vrijgegeven omdat de sessie aan het eindigen is. | Gegooid (`InvalidOperationException`) | Niets; de sessie is voorbij. |
| `OL_E_RUNTIME_CHANNEL_STATE_INVALID` | `CurrentRuntimeCommandStore.RequestAsync` | Het mailbox-slot bevatte een statuswaarde die niet idle, requested of responded is (corruptie). Het slot wordt teruggezet en de fout wordt gegenereerd; het volgende request werkt normaal. | Gegooid (`InvalidDataException`) | Probeer het opnieuw; meld het als het blijft optreden. |
| `OL_E_RUNTIME_CONSTANTS_UNAVAILABLE` | `OmsiRuntimeReaders` | De pointer naar het constantenblok van het voertuig is null. | Runtimedetail | Het voertuig heeft geen constanten; er hoeft niets te gebeuren. |
| `OL_E_RUNTIME_CONSTANT_NOT_FOUND` | `OmsiRuntimeReaders` | `name` staat niet in de constantentabel van het voertuig. | Runtimedetail | Vraag eerst de lijst met constanten op. |
| `OL_E_RUNTIME_CREATED_OBJECT_INVALID` | `OmsiRuntimeReaders.RegisterRoadVehicleHandleAsync` | Het door spawn aangemaakte object heeft een VMT buiten het adresbereik van de OMSI-image. | Runtimedetail | Meld het. |
| `OL_E_RUNTIME_CREATED_OBJECT_NOT_IN_COLLECTION` | idem | Het aangemaakte object staat niet in de wegvoertuigcollectie. | Runtimedetail | Meld het. |
| `OL_E_RUNTIME_CURVE_DEGENERATE` | `OmsiRuntimeReaders.EvaluateRoadVehicleCurveAsync` | Twee opeenvolgende curvepunten hebben dezelfde X. | Runtimedetail | Contentprobleem in de curve van het voertuig. |
| `OL_E_RUNTIME_CURVE_EMPTY` | idem | De curve heeft geen punten. | Runtimedetail | Idem. |
| `OL_E_RUNTIME_CURVE_INVALID` | idem | Geen enkel segment van de curve bevat `x`. | Runtimedetail | Evalueer binnen het domein van de curve. |
| `OL_E_RUNTIME_CURVE_NOT_FOUND` | idem | `name` is onbekend of de functiepointer ervan is null. | Runtimedetail | Vraag eerst de lijst met curves op. |
| `OL_E_RUNTIME_HOF_UNAVAILABLE` | `OmsiRuntimeReaders.ReadRoadVehicleHofsAsync` | De pointer naar de voertuigdefinitie is null. | Runtimedetail | De handle verwijst naar een voertuig zonder definitiegegevens. |
| `OL_E_RUNTIME_INSTALLATION_INCOMPLETE` | `CliProgram.RunAsync` (eigenaarmodus) | `plugins\OmsiLaunch.Plugin.opl` of `plugins\OmsiLaunch.Native.x86.dll` ontbreekt naast het uitvoerbare bestand. | CLI-envelope, exit 7 | Installeer het pakket opnieuw. |
| `OL_E_RUNTIME_OBJECT_HANDLE_REQUIRED` | `CurrentRuntimeControl` | `handle` ontbreekt of is leeg voor `road-vehicle.read`, `human.read`, `vehicle.variables.list`, `vehicle.string-variables.list`, `vehicle.constants.list`, `vehicle.curves.list` (het register weigert deze normaal gesproken eerst met `OL_E_RUNTIME_ARGUMENT_REQUIRED`). | Runtimedetail | Geef de handle op. |
| `OL_E_RUNTIME_OBJECT_HANDLE_STALE` | `OmsiRuntimeReaders` | De handle is onbekend, het object heeft de collectie verlaten, de adresgeneratie is opgehoogd, of de vingerafdruk van het object (VMT + definitie-/modelidentiteit) is veranderd doordat het adres opnieuw is gebruikt. Resterende blinde vlek: dezelfde klasse en hetzelfde model die tussen twee lijstuitlezingen op hetzelfde adres opnieuw worden aangemaakt. | Runtimedetail | Voer `road-vehicles.list`/`humans.list` opnieuw uit en gebruik de nieuwe handle. |
| `OL_E_RUNTIME_OPERATION_FAILED` | `CurrentRuntimeControl.Execute`; `CurrentRuntimeCommandMailbox.TryDispatch`; `D3DRuntimeApi`-fallback | Generieke wrapper voor fouten aan de pluginkant; `Values["detail"]` bevat het bericht (vaak een specifiekere code) en `Values["exception"]` het type exceptie. Een exceptie die binnen de mailbox-dispatcher uit een operatie ontsnapt, wordt ook met deze code beantwoord (zonder waarden), in plaats van het request onbeantwoord te laten. | Runtimeresultaat | Lees `detail`. |
| `OL_E_RUNTIME_OPERATION_UNAVAILABLE` | `CurrentRuntimeControl.Execute` | De plugin heeft geen implementatie voor een operatie die het register wel toestond (versieverschil tussen register en plugin). | Runtimedetail | Installeer een consistent pakket. |
| `OL_E_RUNTIME_OPERATION_UNKNOWN` | `PublicCapabilityRegistry.ValidateRuntimeArguments` | De operatie staat niet in `PublicRuntimeOperationIds`; dat geldt ook voor elke `internal.*`-operatie. Gecontroleerd vóór het opzoeken van de sessie. | Runtimeresultaat; control-antwoord; CLI exit 2 | Gebruik een openbare operatie-id. |
| `OL_E_RUNTIME_PLAYER_VEHICLE_UNAVAILABLE` | `OmsiCameraLockWriter` | `camera.lock` met `preset` terwijl er geen spelersvoertuig is (headless sessies hebben er geen). Wordt ook gemeld als `code` van het `camera.lock.degraded`-event wanneer het opnieuw toepassen mislukt. | Runtimedetail / runtime-event | Vergrendel zonder preset, of gebruik een sessie met een spelersvoertuig. |
| `OL_E_RUNTIME_PROTOCOL_MISMATCH` | `D3DRuntimeApi` | Een geslaagd D3D-resultaat had geen waarden, of een onbekende apparaatstatusstring. | Gegooid (`OmsiRuntimeException`) | Zorg dat de versies van host en plugin overeenkomen. |
| `OL_E_RUNTIME_REQUEST_ID_REUSED` | `CurrentRuntimeCommandStore.RequestAsync` | Het slot bevat een verouderd antwoord met dezelfde request-id als het nieuwe request. Het verouderde antwoord wordt gewist voordat de fout wordt gegenereerd. | Gegooid (`InvalidOperationException`) | Gebruik strikt oplopende request-id's. |
| `OL_E_RUNTIME_REQUEST_TIMEOUT` | `CurrentRuntimeCommandStore.RequestAsync` | Geen antwoord binnen `timeout`; het slot wordt teruggezet en een laat antwoord wordt genegeerd. | Gegooid (`TimeoutException`); CLI exit 5 | Probeer het opnieuw met een langere timeout; controleer of OMSI niet geblokkeerd is (modaal dialoogvenster, laden). |
| `OL_E_RUNTIME_RESPONSE_INVALID` | `CurrentRuntimeCommandStore` | De antwoord-envelope is corrupt, heeft een ongeldige lengte (negatief, nul of groter dan het slot), een sessie-id van een andere sessie of een andere request-id. Het slot wordt teruggezet voordat de fout wordt gegenereerd, zodat het volgende request normaal werkt. | Gegooid (`InvalidDataException`) | Probeer het opnieuw; meld het als het blijft optreden. |
| `OL_E_RUNTIME_RESPONSE_TOO_LARGE` | `CurrentRuntimeCommandMailbox.TryDispatch` | Het geserialiseerde resultaat is groter dan de mailbox van 64 KiB. Resultaten van begrensde lijsten (die met `returned_count` en `truncated`) worden in plaats daarvan ingekort tot ze passen (documentatie-audit BUG-05); in de praktijk blijft de code bereikbaar voor `timetable.logs.read`, dat niet begrensd is. | Runtimeresultaat | Gebruik een beperktere operatie (bijvoorbeeld `road-vehicles.read` in plaats van `road-vehicles.list` bij enorme collecties). |
| `OL_E_RUNTIME_SCRIPT_OBJECT_UNAVAILABLE` | `OmsiRuntimeReaders` | De pointer naar de scriptdefinitie of de scriptstatus van het voertuig is null. | Runtimedetail | Het voertuig heeft geen scriptobjecten. |
| `OL_E_RUNTIME_SESSION_MISMATCH` | `OmsiLaunchService.ExecuteRuntimeAsync`; `CurrentRuntimeCommandStore`; plugin-mailbox | `RuntimeCommand.SessionId` wijkt af van de sessie-id van de handle (gegooid door de host), of een request bereikte een plugin die aan een andere sessie is gekoppeld (door de plugin teruggegeven als getypeerd resultaat). | Gegooid (`InvalidOperationException`) / runtimeresultaat | Stel de opdracht op met `session.SessionId`. |
| `OL_E_RUNTIME_SETTING_NOT_PERSISTENT` | `CurrentRuntimeControl.SetWeather` | `weather.set` wordt altijd geweigerd: OMSI overschrijft de geprofileerde weervelden bij de volgende weertick, dus een schrijfactie kan niet als semantische wijziging worden gemeld. | Runtimeresultaat | Niets; `weather.set` is `UNAVAILABLE`. |
| `OL_E_RUNTIME_SETTING_UNAVAILABLE` | `OmsiWeatherWriter` | Onbekende naam van een weerveld. Momenteel onbereikbaar, omdat `weather.set` eerder al wordt geweigerd. | Runtimedetail (gedefinieerd) | Zie de broncode `src/OmsiLaunch.Interop/OmsiWeatherWriter.cs`. |
| `OL_E_RUNTIME_STRING_VARIABLE_NOT_FOUND` | `OmsiRuntimeReaders` | `name` staat niet in de tabel met stringvariabelen. | Runtimedetail | Vraag eerst de lijst met stringvariabelen op. |
| `OL_E_RUNTIME_VALUE_INVALID` | `OmsiWeatherWriter.ParseBoolean` | Een booleaanse weerwaarde is niet `true`/`false`/`1`/`0`. Momenteel onbereikbaar (zie hierboven). | Runtimedetail (gedefinieerd) | Zie de broncode. |
| `OL_E_RUNTIME_VALUE_OUT_OF_RANGE` | `CurrentRuntimeControl`, `OmsiCameraWriter`, `OmsiCameraLockWriter`, `OmsiRuntimeReaders`, `OmsiWeatherWriter` | `time.set`: `hour` 0..23, `minute` 0..59, `second` 0..59.999; `camera.set`: `family` 0..3, `field_of_view` 10..170; `camera.lock`: `preset` geen geheel getal, `family` 0..3, `preset` 0..255; `road-vehicles.place-random`: `ai_type` 0..255, `group`/`type`/`tour`/`line` 0..65535 (`type` mag -1 zijn), `scheduled` 0..1; `vehicle.variable.set`: `value` niet eindig; `vehicle.curve.evaluate`: `x` niet eindig. | Runtimedetail | Gebruik een waarde binnen het bereik. |
| `OL_E_RUNTIME_VARIABLE_NOT_FOUND` | `OmsiRuntimeReaders` | `name` staat niet in de tabel met numerieke variabelen. | Runtimedetail | Vraag eerst de lijst met variabelen op. |
| `OL_E_RUNTIME_VARIABLE_UNAVAILABLE` | `OmsiRuntimeReaders` | Het variabeleslot of het adres van de waarde is null. | Runtimedetail | De variabele is voor dit voertuig niet gematerialiseerd. |
| `OL_E_TIME_APPLY_FAILED` | `CurrentRuntimeControl.SetTime` | De klokwaarden zijn geschreven, maar de geprofileerde native SetTime-aanroep gaf een fout terug. | Runtimedetail | Probeer het opnieuw; lees de waarde terug met `time.read`. |
## RuntimeD3D
Allemaal gegenereerd door `CurrentRuntimeControl` (`ThrowD3D`-toewijzing van de native status; `detail` bevat de operatie en de HRESULT, `native_status` de numerieke status). Kanaal: runtimeresultaat met de code in `ErrorCode`; `D3DRuntimeApi` gooit dit opnieuw als `OmsiRuntimeException`.
| Code | Native status / oorzaak | Wat te doen |
| --- | --- | --- |
| `OL_E_D3D_DEVICE_LOST` | 8: het Direct3D-apparaat is verloren gegaan. | Wacht op `d3d.restored`; maak de textures opnieuw aan (de generatie is veranderd). |
| `OL_E_D3D_INVALID_ARGUMENT` | 14: ontbrekende of ongeldige `width`, `height`, `level`, `x`, `y`, `format` of `handle` (bereiken: width/height 1..4096, levels 0..16, level 0..15, x/y 0..4095). | Corrigeer de argumenten. |
| `OL_E_D3D_INVALID_PIXEL_BUFFER` | `pixels_base64` is geen geldige Base64 of is groter dan 48 KiB. | Stuur kleinere rechthoeken. |
| `OL_E_D3D_INVALID_TEXTURE_FORMAT` | 6, of een onbekende `format`-naam (geldig: `A8R8G8B8`, `X8R8G8B8`, `R5G6B5`, `X1R5G5B5`, `A1R5G5B5`, `A4R4G4B4`, `A8`, `L8`, `A8L8`). | Gebruik een van de vermelde formaten. |
| `OL_E_D3D_NATIVE_CALL_FAILED` | Elke andere status; de HRESULT staat in `detail`. | Meld het, met de HRESULT. |
| `OL_E_D3D_NOT_READY` | 7: het apparaat is niet gereed (vóór het eerste frame of tijdens het stoppen). | Probeer het opnieuw na `d3d.ready`. |
| `OL_E_D3D_RESET_IN_PROGRESS` | 9: er wordt een apparaatreset uitgevoerd. | Probeer het opnieuw na `d3d.restored`. |
| `OL_E_D3D_RESOURCE_RELEASED` | 13: de texturehandle was al vrijgegeven. | Gebruik vrijgegeven handles niet opnieuw. |
| `OL_E_D3D_STALE_RESOURCE_HANDLE` | 12: de handle hoort bij een vorige apparaatgeneratie; of de handlestring is niet `d3dtex--` / is nul. | Maak de texture opnieuw aan. |
## Sessie
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_CAPABILITY_UNAVAILABLE` | `SessionPlanner`; `ApplyTelemetry` bij `plugin.request.unsupported` | Plan: `LastMapState`, `EntrypointIdentity`, datum-/tijd-/jaarmodus, weermodus, velden van het spelersvoertuig of invoerdocumenten aangevraagd (`Requested capability unavailable: `). Telemetrie: de plugin heeft de handoff geweigerd (kan niet gebeuren bij een uitvoerbaar plan). | Plandiagnose; sessiediagnose | Verwijder de niet-ondersteunde aanvraag ([bekende beperkingen](https://omsilaunch.omsimods.com.br/nl/docs/reference/known-limitations/index.md)). |
| `OL_E_HEADLESS_ARM_FAILED` | `ApplyTelemetry` bij `headless.arm.failed` | De plugin kon de eenmalige hook voor de headless start in OMSI niet activeren. | Sessiediagnose (`Failed`) | Controleer de build; meld het. |
| `OL_E_NO_ACTIVE_SESSION` | CLI-client (`ReportForwarded`, `CliEventWatch`) | Geen enkele eigenaar antwoordt op de control-pipe van de installatie (geen sessie, of de eigenaar is nog aan het starten/valideren). | CLI-envelope, exit 4 | Start een sessie, of wacht tot die `Running` is. |
| `OL_E_PLUGIN_NOT_LOADED` | `SuperviseAsync` | `StartupTimeoutSeconds` is verstreken vóór `plugin.started` (OMSI heeft `plugins\OmsiLaunch.Plugin.opl` niet geladen, of blijft hangen vóór de initialisatie van de plugin). | Sessiediagnose (`Failed`) | Controleer de plugin-closure, `plugins\OmsiLaunch.Plugin.opl` en `logfile.txt` van OMSI. |
| `OL_E_PLUGIN_PROTOCOL_MISMATCH` | `ApplyTelemetry` bij `plugin.handoff.invalid` of niet-parseerbare telemetrie-JSON | De plugin kon de opstart-handoff niet lezen/verifiëren (versie 3/4, SHA-256), of stuurde ongeldige telemetrie. | Sessiediagnose (`Failed`) | Zorg dat de versies van host en plugin overeenkomen (installeer het pakket opnieuw). |
| `OL_E_SESSION_ALREADY_ACTIVE` | `CliProgram.RunAsync` | Er beantwoordt al een eigenaar `session.status` voor deze installatie. | CLI-envelope, exit 7 | Gebruik clientopdrachten (`session status`, `session stop`, runtimeopdrachten). |
| `OL_E_SESSION_NOT_RUNNING` | `OmsiLaunchService.ExecuteRuntimeAsync` | De sessiestatus is niet `Running`. | Gegooid (`InvalidOperationException`) | Roep eerst `WaitForAsync(session, SessionState.Running, ...)` aan. |
| `OL_E_SESSION_PRESENTATION_INVALID` | `SessionPlanner` | Het plan voor opstartscherm/ITX kon niet worden opgebouwd; het bericht bevat de presentatiecode. | Plandiagnose | Zie [Presentatie](#presentation). |
| `OL_E_SESSION_START_FAILED` | `WindowsHost.ShowFailure` (dialoogvenster van OmsiLaunchW) | Fallbackcode die wordt getoond als een startplan niet uitvoerbaar is of de sessie de gameplay niet heeft bereikt, en er geen `OL_E_`-diagnosemelding bestaat. | Alleen berichtvenster | Lees `.omsilaunch\diagnostics`. |
| `OL_E_SITUATION_LOAD_FAILED` | `ApplyTelemetry` bij `world.situation.failed` | De native start van de opgeslagen situatie gaf een fout terug (`native_status` in het event). | Sessiediagnose (`Failed`) | Controleer de `.osn` en de bijbehorende kaart. |
| `OL_E_STARTUP_TIMEOUT` | `SuperviseAsync` | De plugin is gestart, maar `Running` werd niet binnen `StartupTimeoutSeconds` bereikt. | Sessiediagnose (`Failed`) | Verhoog `/startup-timeout` voor grote kaarten; controleer `RuntimeEvents` op het laatste world-event. |
| `OL_E_START_SESSION` | `OmsiLaunchService.StartAsync` | Elke exceptie in het startpad; het bericht is het binnenste bericht (dat meestal met de binnenste code begint). | Sessiediagnose (`Failed`) | Handel op basis van de binnenste code. |
| `OL_E_WORLD_START_FAILED` | `ApplyTelemetry` bij `world.failed` | De native NEW_MAP-start gaf een fout terug (`native_status` in het event). | Sessiediagnose (`Failed`) | Controleer de kaart, de instappuntindex en de logs van OMSI. |
## SessionProfile
Allemaal gegenereerd door `SessionProfileCompiler` (`src/OmsiLaunch.Core/SessionProfiles.cs`) of `CliInput`, gegooid als `SessionProfileException` (een `IOException` met `Code`), CLI exit 2. Zie [sessieprofielen](https://omsilaunch.omsimods.com.br/nl/docs/reference/session-profiles/index.md).
| Code | Betekenis / typische oorzaak | Wat te doen |
| --- | --- | --- |
| `OL_E_SESSION_PROFILE_ASSET_MISSING` | De `assets`-map voor het opstartscherm of het `profile`-bestand voor internettextures van de preset bestaat niet binnen het pakket. | Voeg de asset toe. |
| `OL_E_SESSION_PROFILE_INVALID` | Schending van de structuur of van een limiet: meer dan 256 KiB, niet precies één root-mapping, YAML-anchors, onbekende sleutel, ontbrekende verplichte sleutel, niet-scalaire waarde waar een scalaire waarde vereist is, `id` wijkt af van de mapnaam, presets niet 1..5 of dubbele `index`, niet-positieve timeouts, niet-ondersteunde modus voor weer/opstartscherm/internettextures, datum/tijd niet `explicit`, ongeldige YAML, parseerfouten bij getallen/datums. | Corrigeer de YAML volgens het bericht. |
| `OL_E_SESSION_PROFILE_MAP_MISMATCH` | `compatibility.maps` is niet leeg en bevat niet de gekozen kaart (NEW_MAP) of de kaart van de gekozen situatie (SAVED_SITUATION). | Kies een compatibele wereld. |
| `OL_E_SESSION_PROFILE_NOT_FOUND` | `\.omsilaunch\session-profiles\\profile.yaml` bestaat niet. | Controleer de id. |
| `OL_E_SESSION_PROFILE_OVERRIDE_CONFLICT` | Een expliciet CLI-argument is gericht op een veld dat in bezit is van het gekozen profiel/de gekozen preset. | Laat de vlag weg of kies een andere preset. |
| `OL_E_SESSION_PROFILE_PATH_ESCAPE` | De id bevat `\`, `/`, `:` of `..`; of een assetpad is absoluut, verlaat het pakket of loopt via een junction/symlink. | Houd paden binnen het pakket. |
| `OL_E_SESSION_PROFILE_PRESET_NOT_FOUND` | `/predefined-profile-index` ontbreekt, valt buiten 1..5 of is niet door het profiel gedeclareerd. | Gebruik een gedeclareerde presetindex. |
| `OL_E_SESSION_PROFILE_SCHEMA_UNSUPPORTED` | `schema` is niet `omsilaunch.session-profile/v1`. | Gebruik het ondersteunde schema. |
| `OL_E_SESSION_PROFILE_SETTING_NOT_WRITABLE` | Een instellingssleutel van een preset is bekend, maar niet beschrijfbaar. | Verwijder de sleutel. |
| `OL_E_SESSION_PROFILE_SETTING_UNKNOWN` | Een instellingssleutel van een preset staat niet in de catalogus. | Gebruik een sleutel uit de catalogus. |
## Transactie
Zie [transacties en recovery](https://omsilaunch.omsimods.com.br/nl/docs/concepts/transactions-and-recovery/index.md).
| Code | Gegenereerd door | Betekenis / typische oorzaak | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_E_CLOSECHECK_REMOVE_FAILED` | `OmsiLaunchService.RemoveStaleClosecheck` | Een verouderde `closecheck` bestaat nog na `File.Delete`. | Sessiediagnose via `OL_E_START_SESSION` | Verwijder `\closecheck` handmatig (rechten). |
| `OL_E_RECOVERY_ABSENT_OWNERSHIP_MISMATCH` | `FileConfigurationTransaction.RestoreAsync` | Een pad dat vóór de sessie niet bestond, bevat nu content die afwijkt van wat de sessie heeft toegepast; het wordt niet verwijderd en het journal blijft behouden. | Gegooid (`IOException`); binnen `OL_E_RESTORE_FAILED` / `OL_E_START_SESSION`; CLI exit 8 | Inspecteer het bestand; verwijder of verplaats het en voer daarna `/recover` uit. |
| `OL_E_RECOVERY_ABSENT_OWNERSHIP_UNVERIFIED` | `RestoreAsync` (journal van vóór de vingerafdrukken) | Het journal heeft geen vingerafdruk van de toegepaste content voor een oorspronkelijk afwezig pad dat geen verwijderpad is, dus eigendom kan niet worden aangetoond. Bij de start van een sessie wordt de recovery uitgesteld en opnieuw geprobeerd met de geplande bytes van deze sessie; via `RecoverPendingAsync` wordt de code gegooid. | Gegooid (`IOException`); CLI exit 8 | Start een sessie met dezelfde spec (die levert de bytes), of inspecteer en verwijder het bestand, en voer daarna `/recover` uit. |
| `OL_E_RECOVERY_BACKUP_CORRUPT` | `RestoreAsync` | De SHA-256 van een back-up komt niet overeen met de snapshot die in het journal is vastgelegd; er wordt niets geschreven. | Gegooid; binnen `OL_E_RESTORE_FAILED`; CLI exit 8 | Zet het bestand terug vanuit je eigen back-up; verwijder het journal pas als je het zeker weet. |
| `OL_E_RECOVERY_JOURNAL_MISSING` | `RestoreAsync` | Er bestaan snapshots in het geheugen, maar `journal.json` is verdwenen (tijdens de sessie verwijderd). | Gegooid; binnen `OL_E_RESTORE_FAILED` | Controleer de sessiebestanden handmatig. |
| `OL_E_RECOVERY_JOURNAL_REMOVE_FAILED` | `FileConfigurationTransaction.RemoveJournal` | `journal.json` bestaat nog na het verwijderen (het herstel zelf is geslaagd en geverifieerd). | Gegooid; binnen `OL_E_RESTORE_FAILED`; CLI exit 8 | Verwijder `\.omsilaunch\journal.json` (rechten) of voer `/recover` opnieuw uit (idempotent). |
| `OL_E_RESTORE_DEFERRED` | `OmsiLaunchService` (startfout / supervisor) | Het afsluiten van OMSI kon niet worden bevestigd, dus zijn bestanden niet vervangen zolang OMSI ze mogelijk nog gebruikt; het journal blijft behouden. | Sessiediagnose (`Failed`) | Voer `/recover` uit nadat `Omsi.exe` is afgesloten (of laat de volgende start het herstel automatisch uitvoeren). |
| `OL_E_RESTORE_FAILED` | `OmsiLaunchService` (startfout / supervisor) | `RestoreAsync` gooide een exceptie; het bericht bevat de binnenste code; het journal blijft behouden. | Sessiediagnose (`Failed`); CLI exit 8 wanneer gegooid vanuit `/recover` | Handel op basis van de binnenste code en voer daarna `/recover` uit. |
## Waarschuwing
| Code | Gegenereerd door | Betekenis | Kanaal | Wat te doen |
| --- | --- | --- | --- | --- |
| `OL_W_RESTORE_FOREIGN_FILE_RETAINED` | `FileConfigurationTransaction.RestoreAsync` | Een pad voor sessieverwijdering (ITX-doel, `Texture\standard.ipr`, `closecheck`) bestond niet vóór de sessie en bestaat nu wel, maar onder dit journal is nooit een OMSI-proces gestart, dus het bestand kan geen bijproduct van de sessie zijn. Het wordt behouden en gemeld (bericht = relatief pad, `Data["sha256"]`); de transactie wordt toch voltooid. | Sessiediagnose / `RecoveryStatus.Diagnostics` (status wordt niet beïnvloed) | Inspecteer het bestand; verwijder het zelf als je het niet wilt. |
## Diagnosecodes die geen fout zijn
| Code | Gegenereerd door | Bericht / gegevens | Betekenis |
| --- | --- | --- | --- |
| `process.started` | `OmsiLaunchService.LiveSession.Attach` | bericht = PID; `Data["thread_id"]`, `Data["creation_utc"]` (ISO 8601) | `Omsi.exe` is aangemaakt en de identiteit ervan is vastgelegd. Sessiediagnose. |
| `closecheck.stale-removed` | `OmsiLaunchService.RemoveStaleClosecheck` | bericht = SHA-256 van het verwijderde bestand | Een `closecheck` die vóór de sessie bestond, is definitief verwijderd (`SuppressStaleClosecheckWarning = true`). Sessiediagnose. |
| `restore.session-artifact-removed` | `FileConfigurationTransaction.RestoreAsync` | bericht = relatief pad; `Data["sha256"]` | Een pad voor sessieverwijdering werd door OMSI opnieuw aangemaakt tijdens een sessie waarvan het proces was gestart; het is verwijderd om de oorspronkelijke afwezigheid te herstellen. Sessiediagnose / `RecoveryStatus.Diagnostics`. |
| `plugin.integrity.reference` | `OmsiLaunchService.PlanSessionAsync` | bericht = `manifest` of `self` | Welke referentie de validatie van de permanente plugin gebruikt. Plandiagnose. |
| `session_profile.selected` | `SessionPlanner` | bericht = profiel-id; `Data["session_profile.id|name|version|author|preset_id|preset_index|preset_name|path"]` | Herkomst van een sessie die uit een sessieprofiel is samengesteld. Plandiagnose. |
Namen van runtime-events (`RuntimeEvent.Type`, geen diagnosemeldingen) staan vermeld in de [sessielevenscyclus](https://omsilaunch.omsimods.com.br/nl/docs/concepts/session-lifecycle/index.md#telemetry-events).