Merge nucleic/olive-jade-civet-rznt into dev
This commit is contained in:
+18
-3
@@ -32,17 +32,32 @@ Two facts it discovered that anything referencing this package needs:
|
||||
```powershell
|
||||
cd windows/spikes/WslcApiDump
|
||||
dotnet run # dump the API + check every facade assumption
|
||||
dotnet run -- --probe # + call the two read-only statics (service version, missing components)
|
||||
dotnet run -- --session # + create a real session and print its live property VALUES
|
||||
dotnet run -- --probe # + GetMissingComponents / GetVersion
|
||||
dotnet run -- --session # + create a session, then a SECOND one with the same name
|
||||
dotnet run -- --all-types # include the ABI/marshalling plumbing in the dump
|
||||
```
|
||||
|
||||
**If it reports missing components** (`VirtualMachinePlatform`, `WslPackage`), the machine cannot
|
||||
run wslc yet: `wsl --install`, reboot for the Virtual Machine Platform feature, and run again.
|
||||
Everything that reaches the service fails with `REGDB_E_CLASSNOTREG` (0x80040154) until then, and
|
||||
the tool says so rather than emitting a string of unexplained COM errors. `--session` is skipped
|
||||
in that state instead of failing.
|
||||
|
||||
Note that the assumption check reads the **`Microsoft.WSL.Containers`** namespace only. That is
|
||||
correctness, not tidiness: a C#/WinRT projection also exports `ABI.Microsoft.WSL.Containers.*`
|
||||
marshalling types with the *same short names*, and matching on short name alone checks every
|
||||
member against the marshalling struct — which reported 42 false MISSINGs, with `CreateMarshaler`
|
||||
helpfully offered as the nearest name.
|
||||
|
||||
It writes the full public object model to `wslc-api-dump.txt` (`--out` to relocate) and prints an
|
||||
`ok` / `MISSING` line per assumption, each with *why that member matters* and a nearest-name hint.
|
||||
It exits 0 even when assumptions fail — a mismatch is the product, not an error. Only a genuinely
|
||||
broken run (the assembly won't load) exits non-zero.
|
||||
|
||||
Every path in it has been exercised against a stand-in assembly carrying the observed 2.9.3 type
|
||||
and member names, so a failure on your machine is a finding about wslc, not about this tool.
|
||||
and member names — including the `ABI.` shadow types and a service that reports missing components
|
||||
and throws `0x80040154` — so a failure on your machine is a finding about wslc, not about this
|
||||
tool.
|
||||
|
||||
**What to send back:** the console output, and `wslc-api-dump.txt` if anything is MISSING —
|
||||
which now means the package moved under us, not that we guessed wrong.
|
||||
|
||||
Reference in New Issue
Block a user