35 Commits
Author SHA1 Message Date
mirkobrombin 52c35cea9c fix: let the .NET Framework 4.8 setup run its install
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: version layer for its setup, expanded service paths, seeded services, 64-bit packages in the native engine, dism KB4019990, missing shell and event log calls
2026-11-02 18:53:06 +00:00
Clansty 244bbb8104 feat: report the host's interfaces in the MIB_IFROW calls
- GetIfEntry, GetIfTable and GetNumberOfInterfaces answer from the host's interfaces. GetIfEntry names one by the index the record handed in carries, GetIfTable puts the rows behind a count, and a table that does not fit is refused with ERROR_INSUFFICIENT_BUFFER and the size it needs.

- The interface walk moved out of host_api.cpp into interfaces.cpp, so the records GetAdaptersAddresses reports and the rows these calls report come from one enumeration of the host rather than two.

- interfaces_test checks the record against the MIB_IFROW offsets Windows declares and the cutting of a long name. The new guest fixture interface_client.c reads the tables through the runtime, in 64-bit and 32-bit builds: it checks that the count, the rows and GetIfEntry agree, that a sorted table lists the rows by index, and that an unknown index and a short table fail as Windows fails them.

Assisted-by: Claude Code:deepseek-v4.1-flash-1017

AI-Scope: Read the MIB_IFROW and MIB_IFTABLE layouts, moved the interface enumeration into interfaces.cpp, wrote the three handlers and both tests, and checked them with ctest (native_interface_table_contract, native_interface_table_client, native_interface_table_client_x32).
2026-11-02 12:03:56 +08:00
mirkobrombin a948d60bec feat: add missing text, crypto and host APIs 2026-10-31 16:58:22 +00:00
Raymond Bennett 1deb92579a feat: name files by their volume devices, the same way everywhere
A drive was \Device\HarddiskVolumeN with N counted over the drives present
for QueryDosDevice but from the letter (C first) for the process image and
mapped file names, so Z: had two device names, and NtQueryObject answered
an empty name for every file. NativePaths now gives each drive one volume
device (C is 1 and the drives after it follow in letter order, A and B
last) and turns a Win32 path into the NT name the object manager uses: a
drive path on its volume device, a UNC path on \Device\Mup. QueryDosDevice,
the image and mapped file names and NtQueryObject (ObjectNameInformation of
a file) use it; the drive list QueryDosDevice and GetLogicalDrives share
moved there as well. Zig reads a file name this way to find its own path.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the volume device naming and its callers
(cherry picked from commit 02cce32c5ee2b0c341e44ae6fa691f28aa51b62f)
2026-10-30 08:25:46 -07:00
mirkobrombin 58219c2bfb feat: add LsaLookupSids 2026-10-30 11:34:18 +00:00
mirkobrombin 00a9989496 feat: add GetNetworkParams 2026-10-30 11:23:30 +00:00
mirkobrombin 366202e759 fix: answer working set and console session queries
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Added SetProcessWorkingSetSize, its extended form and WTSGetActiveConsoleSessionId.
2026-10-30 10:34:51 +00:00
mirkobrombin eb9d664a98 chore: merge pull request #63 from rayzorben/feat/best-route2 2026-10-30 06:32:59 +00:00
mirkobrombin cb761ced3a chore: merge pull request #62 from rayzorben/feat/adapter-dns-servers 2026-10-30 06:32:59 +00:00
mirkobrombin 8b198e719e chore: merge pull request #52 from rayzorben/feat/volume-enumeration 2026-10-30 06:32:59 +00:00
Raymond Bennett cbc18f793c feat: add GetBestRoute2
c-ares sorts the addresses it resolves by the route to each (RFC 6724) and
asks GetBestRoute2 for the best source address. The answer is the host's own
routing choice: a datagram socket connected to the destination, which sends
nothing, is bound to the source address, and the adapter holding that address
is the interface. The route row names the interface and the destination as a
host route; an unreachable destination is ERROR_NETWORK_UNREACHABLE.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the handler
(cherry picked from commit a13a99c0ffd2ade13fc88ff0f635f16270ea7919)
2026-10-28 23:14:32 -07:00
Raymond Bennett a8a5e10bdb feat: report the host's DNS servers in GetAdaptersAddresses
aria2, through c-ares, takes its DNS servers from each adapter's
FirstDnsServerAddress list, which Raven left empty, so name resolution
failed with "Could not contact DNS servers". Every adapter but the loopback
one now lists the nameservers of the host's resolver configuration, as
IP_ADAPTER_DNS_SERVER_ADDRESS records, unless GAA_FLAG_SKIP_DNS_SERVER asks
for none.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the DNS server records
(cherry picked from commit d312173201493c6be172c9aaa3cb124d8b7b7b1c)
2026-10-28 23:14:32 -07:00
Raymond Bennett d8503ec425 feat: enumerate volumes and accept volume names as paths
duf lists disks with FindFirstVolumeW and FindNextVolumeW, then asks
GetVolumePathNamesForVolumeNameW, GetVolumeInformationW and
GetDiskFreeSpaceExW about each volume by its \\?\Volume{GUID}\ name.

Each drive of the prefix is a volume whose GUID is made from its letter, so
the name is the same every time. The volume functions list them, name the
volume mounted at a drive's root (GetVolumeNameForVolumeMountPointW) and the
root a volume is mounted at, and every path function accepts a volume name
in place of the drive.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the volume functions and the volume name in path resolution
(cherry picked from commit cc93d36368f72f5b43c213643a54abe9aa2564e0)
2026-10-28 23:14:32 -07:00
Raymond Bennett 1fb0a94e87 feat: add GetVolumeInformationByHandleW
OpenTofu asks it for the volume of a file it has open. The answer is the
volume every drive reports through GetVolumeInformationW, which now shares
its fields with the ANSI form and this one.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the handler and the shared fields
(cherry picked from commit 99bd8a6c6def628d3aec20b765dd2183597f683f)
2026-10-28 23:14:32 -07:00
Ray Bennett 4699a741c1 feat: give console programs the terminal as their console (#31)
* feat: give console programs the terminal as their console

A standard handle that is a terminal, and CONIN$, CONOUT$ and CON, now act as a console: modes map to terminal settings,
reads and writes convert between UTF-16 and the terminal's UTF-8, terminal input becomes key events, and Ctrl+C runs the
control handlers. Files and pipes still fail the console functions, as on Windows.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the console functions over the terminal, their pty test and the guest test program from the public console API documentation.

* test: let the console client run by hand, saying which step failed

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Made the exact size and cursor checks optional and gave each step an instruction and a failure number.

* feat: follow the console cursor through the output instead of asking the terminal

Programs that redraw their command line read and move the cursor on every key; asking the terminal each time was slow, and
wrong on terminals that never answer. The terminal is now asked only when the position may be stale.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the cursor tracker, WriteConsoleOutputCharacter, ScrollConsoleScreenBuffer, the resize events and their tests.
2026-10-28 17:11:25 +01:00
mirkobrombin 643cf9ac29 feat: register extended session notifications 2026-10-28 10:51:50 +00:00
mirkobrombin 5fa9c467a8 feat: add application recovery and error report metadata registration
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the application recovery and error report metadata registrations.
2026-10-28 11:02:11 +00:00
mirkobrombin 3577bf76d1 feat: find no stored credentials 2026-10-28 10:51:49 +00:00
mirkobrombin 1f428eeee3 feat: report IPv4 adapters in GetAdaptersInfo and the user's region code
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote GetAdaptersInfo and GetUserDefaultGeoName from their documentation, with tests.
2026-10-27 08:38:05 +00:00
mirkobrombin 44a593867c feat: run an SSH client's terminal and file transfer windows 2026-10-26 23:13:38 +00:00
mirkobrombin 609a4ae4c4 feat: receive socket messages and wait on socket events 2026-10-26 14:17:43 +00:00
mirkobrombin 0a0fe4be89 feat: add shared Windows process state and parallel guest execution 2026-10-24 16:24:23 +00:00
mirkobrombin f9f3a67f1c fix: serve the Windows calls that Inno Setup, 7-Zip and VLC make 2026-10-23 21:27:15 +00:00
Mirko Brombin 5d98622454 feat: run 32-bit custom actions of 64-bit packages and open the 32-bit registry view from 64-bit programs 2026-10-03 10:21:22 +00:00
Mirko Brombin c02f68dc74 feat: keep DPI awareness, tell awareness contexts apart, extract icons and serve UI Automation's reserved values for WPF 2026-10-03 10:21:06 +00:00
Mirko Brombin f4509d0c1f feat: implement the Windows APIs that .NET programs and their installers call 2026-09-23 00:12:56 +00:00
Mirko Brombin 0aa82061b6 feat: name the accounts behind known SIDs 2026-09-21 16:09:02 +00:00
Mirko Brombin 6d1fe0f7e9 feat: report that the machine has no directory object name, as one outside a domain 2026-09-21 14:16:58 +00:00
Mirko Brombin fbc56c89d1 feat: answer GetVolumeInformationA 2026-09-21 14:16:58 +00:00
Mirko Brombin a4eb005a73 feat: answer QueryDosDevice, ANSI disk and crypto names and CryptGenRandom, and return handles at the program's pointer width 2026-09-21 12:31:04 +00:00
Mirko Brombin 7398593ae3 feat: add list the prefix drives with GetLogicalDrives and GetLogicalDriveStrings 2026-09-21 10:01:03 +00:00
Mirko Brombin c0946f8c44 feat: add RtlGetVersion, DOS and local file times, the SysWOW64 directory, UrlIs and PathStripToRoot, and answer the user's own account by its Windows name 2026-09-21 04:26:15 +00:00
Mirko Brombin ead54d6b10 feat: run Google Chrome with NT object queries, COM apartments, file completion ports and SDDL descriptors 2026-09-03 21:44:05 +02:00
Mirko Brombin 26fbeabc78 feat: run Steam's web UI with cross-process handles, per-thread message queues, socket events and process identity 2026-09-03 16:48:12 +02:00
Mirko Brombin 66087052d8 feat: run Chromium's helper processes with DirectWrite, named pipes, jobs, inherited handles and shared sections 2026-09-03 06:06:54 +02:00