Programs built without kernel32 imports, Zig's among them, call ntdll's
RtlUpcaseUnicodeChar, RtlQueryPerformanceCounter and
RtlQueryPerformanceFrequency, RtlAddVectoredExceptionHandler and its
relatives, and leave through RtlExitUserProcess. Each is the function
kernel32 has (CharUpper of one character, QueryPerformanceCounter and
QueryPerformanceFrequency, AddVectoredExceptionHandler and the others,
ExitProcess) and now runs the same handler.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the added names
(cherry picked from commit 6b9a401a7364d6aa1a360ee6217ef53bb3aa9456)
Go's os.ReadDir reads directories with GetFileInformationByHandleEx and
FileIdBothDirectoryInfo or FileFullDirectoryInfo, which failed with
ERROR_INVALID_PARAMETER: Hugo, OpenTofu, rclone, restic, gdu and the go
command itself could not read a directory.
The directory classes (FileIdBothDirectoryInfo, FileFullDirectoryInfo,
FileIdExtdDirectoryInfo and their restarting forms) now read entries as
NtQueryDirectoryFile does, which gains the native classes that carry the
file's identifier (FileIdBothDirectoryInformation,
FileIdFullDirectoryInformation, FileIdExtdDirectoryInformation).
RtlNtStatusToDosError learns the statuses directory reads end with, such as
STATUS_NO_MORE_FILES.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the directory classes and the status translations