Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: icu.dll with its forwarders, written from the public ICU API documentation and UAX #11, #14 and #29, with its test
The guest RTL that replaced the ReactOS one set every section's DebugInfo
to -1. The components built from Wine sources (urlmon, windowscodecs,
rpcrt4 and others) name their sections through DebugInfo right after
initializing them, so they wrote to address 0x27 and crashed. A section
now gets a debug record unless CRITICAL_SECTION_NO_DEBUG_INFO is passed,
as Windows documents and as 32-bit sections already have. The records
live in a heap of their own, so DeleteCriticalSection gives back only
those and leaves a program's static record alone.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: traced the 0x27 faults to the debug record, the record heap in kernel.c and the kernel_threads_client checks
The PEB names a free FastPebLock that RtlEnterCriticalSection and
RtlLeaveCriticalSection take and release; a program's own critical section
is initialized, entered again by its owner, tried and deleted through ntdll.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the test client and its registration
(cherry picked from commit 6ca000e45c77933d5ffa46c8e18fb71698d6a116)
QueryDosDevice names C: and Z: as volumes 1 and 24, and NtQueryObject names
an open folder on drive C by that volume device, without a closing
backslash.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the test client and its registration
(cherry picked from commit 701efce5592e7e3c91ade4e341863124fe3895f6)
A poll of a listening socket completes through the completion port with
AFD_POLL_ACCEPT and the APC context once a client connects; a poll nothing
satisfies ends as cancelled after NtCancelIoFileEx, with
ERROR_OPERATION_ABORTED from the port.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the test client and its registration
(cherry picked from commit 6a54eed4bea13ada2845b1eacc6bfe2ef0637d02)
A copy of the program in a folder added to PATH starts by its name alone.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the test client and its registration
(cherry picked from commit 451226102dc3cd3f2447943b24e80ce5141e333e)
Programs ask Windows.System.Profile.AnalyticsInfo which device family and
version of Windows they run on; winget's engine activates it by name. The
class joins RetailInfo and SharedModeSettings in raven-twinapi.dll: the
family is Windows.Desktop, its version the four numbers RtlGetVersion and
the registry's update build revision give, packed in sixteen bits each and
written in decimal, and the form Desktop.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the AnalyticsInfo statics and version info in twinapi.c, their registration and the check_analytics part of the twinapi_client test
Windows has carried SQLite as winsqlite3.dll since Windows 10, and
programs such as winget keep their package index in it.
scripts/provision-sqlite.py builds the pinned public-domain
amalgamation (3.54.1, SHA3-256 checked) with MinGW, exporting the
unsuffixed sqlite3_* interface; the runtime places it in the system
directory like its other components.
Only the 64-bit library for now: Windows' 32-bit winsqlite3 uses the
standard calling convention for its interface and callbacks, which the
published amalgamation does not declare.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: provisioning script, CMake wiring, license records and the sqlite_client test
GetPackageFullName, GetPackageFamilyName and GetApplicationUserModelId
ask about a process by its handle; winget asks them about itself before
it decides where its data lives. No process in a prefix has package
identity, so they answer APPMODEL_ERROR_NO_PACKAGE with a length of
zero, as the GetCurrentPackage* forms already did.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the handlers and the package_identity_client test
The shell component holds the Windows Runtime's activation (RoInitialize,
RoGetActivationFactory and friends), which combase and runtimeobject
forward to once it is loaded. It was loaded only for programs importing
COM, the shell or user32, so a program that imports just combase,
runtimeobject or the api-ms-win-core-winrt API sets got the placeholder
that registers no class, and activated nothing.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the loading condition, its comment and the winrt_import_client test
GetProcAddress on a library loaded at run time failed with
ERROR_MOD_NOT_FOUND when the export forwarded to a library nobody had
loaded yet: the loader brought in forwarder targets for imports, but the
lookup did not. It now loads the target through the same path as
LoadLibrary and goes on, as Windows does, trying each library once; a
forwarder to a library that is not there still finds nothing, with
ERROR_MOD_NOT_FOUND. Programs that look up ICU through icuuc.dll and
icuin.dll, which forward to icu.dll, rely on it.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the lookup loop and the late_forwarder test
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the window controls, dialog manager, message boxes, text layout, drawing helpers and generated resources as own code from Microsoft's documentation, using published test expectations for behaviour only; removed the retired text component and its layout tests.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote regsvr32 as a new command-line tool from its public description, with tests for its documented exit codes.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the test's delay-load helper as own code from the public PE format and its delay import table.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote rundll32 as a new command-line tool from its public description, listed it for prefixes and packages, and added tests.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Implemented the call for both widths from the thread block and checked it in the kernel threads test.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Passed the guest call service to the 32-bit desktop, so font enumeration reaches the callback that GDI+ relies on, and added a test.