Merge nucleic/lucid-river-toad-6efj into dev
This commit is contained in:
+6
-1
@@ -123,7 +123,12 @@ CLSID in it, so `CoCreateInstance` has nothing to name. The only registered cocl
|
||||
IDLs belong to the compat surface (`WSLCCompatSessionManager` and its factory) and to the WSL
|
||||
service proper (`LxssUserSession`, `LxssUserSessionInBox`).
|
||||
|
||||
The likely answer is that one of those objects also implements the internal interface — COM
|
||||
**Answered on hardware (WSL 2.9.4): yes.** `WSLCCompatSessionManager`
|
||||
(`a9b7a1b9-0671-405c-95f1-e0612cb4ce8f`) — the same class the SDK itself activates — answers a QI
|
||||
for `IWSLCSessionManager`. One object, two faces. `IWSLCVirtualMachine` was refused by every
|
||||
class, confirming §13.1's retraction against the machine rather than against an IDL.
|
||||
|
||||
The hypothesis was that one of those objects also implements the internal interface — COM
|
||||
objects routinely expose several — so `--internal` activates each and QIs for the internal IIDs.
|
||||
It **never calls a method**, so a vtable mismatch cannot crash it, and QI alone answers the
|
||||
question. `--internal-call` then calls `GetVersion` (slot 3) and `ListSessions` to confirm the
|
||||
|
||||
@@ -52,7 +52,10 @@ internal static class InternalComProbe
|
||||
("IWSLCSessionManager", new Guid("82A7ABC8-6B50-43FC-AB96-15FBBE7E8760"),
|
||||
"THE one that matters — OpenSessionByName/EnterSession/ListSessions, i.e. reattach"),
|
||||
("IWSLCSession", new Guid("EF0661E4-6364-40EA-B433-E2FDF11F3519"),
|
||||
"ListContainers/OpenContainer — enumeration and the container half of reattach"),
|
||||
"ListContainers/OpenContainer. EXPECTED to fail here, and its failure is not a gap: a "
|
||||
+ "session is RETURNED BY the manager (OpenSessionByName/EnterSession/CreateSession), "
|
||||
+ "not QI'd off it. Probed only to confirm the manager is a manager and not a "
|
||||
+ "do-everything object"),
|
||||
("IWSLCVirtualMachine", new Guid("B5E2D8F1-9A3C-4E6B-8D1F-7C4A2E9B6D3A"),
|
||||
"GetId → the VM GUID an AF_HYPERV bind needs. Per the IDL only a factory the SYSTEM "
|
||||
+ "service owns can produce one, so this is EXPECTED to fail — probed anyway, "
|
||||
|
||||
Reference in New Issue
Block a user