12 Commits
Author SHA1 Message Date
mirkobrombin 538e9301a9 chore: merge pull request #76 from rayzorben/feat/volume-device-names 2026-10-31 08:15:53 +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
Raymond Bennett f6d16c5793 fix: look for a program in the folders of PATH in CreateProcess
CreateProcess with no application name looked for the program of its
command line in the caller's folder, the current folder, System32 and the
Windows folder, but never in PATH, where Windows looks last (after the
16-bit System folder, also added). Nim starts gcc.exe that way and could not
build anything. The folders of PATH come from one place now, which the
library search already used.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the program search of CreateProcess
(cherry picked from commit f1d78cb8c699516f471e44c81252c65f9c896f58)
2026-10-30 08:25:23 -07:00
mirkobrombin e28ec6d6d4 chore: merge pull request #61 from rayzorben/feat/dll-search-path 2026-10-30 06:32:59 +00:00
Raymond Bennett 28199707a9 feat: search the current directory and PATH for libraries
The standard search order for a library ends with the current directory and
the folders of the PATH variable; Raven stopped at the system folders, so a
program built with llvm-mingw's clang++ could not find libc++.dll on PATH,
and LoadLibrary never found a library there either.

The libraries a program imports are now also looked for in the directory it
starts in and the folders of its PATH (from the environment it was given, or
RAVEN_GUEST_PATH for a program started from the host), and LoadLibrary's
search ends with the PATH the program has at the time.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the search step and the PATH helpers
(cherry picked from commit 1865571d0ccd6e36ace096193e9a7bf71de48161)
2026-10-28 23:19:08 -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
mirkobrombin b387f9f6f2 feat: serve App-V package files from their virtual file system folders 2026-10-27 16:10:47 +00:00
mirkobrombin 0a0fe4be89 feat: add shared Windows process state and parallel guest execution 2026-10-24 16:24:23 +00:00
Mirko Brombin 177f41973e feat: load the libraries a program's side-by-side assemblies declare from their WinSxS folders 2026-09-21 15:02:08 +00:00
Mirko Brombin 11997af41b feat: build msxml3, libxslt, atl100, oleaut32 and regsvr32 from ReactOS and register the component classes in each prefix 2026-09-21 07:15:16 +00:00
Mirko Brombin b264bbd6c6 feat: find shared libraries in the system directory, keep the system's own libraries the runtime's, and redirect System32 for 32-bit programs 2026-09-21 05:13:14 +02:00
Mirko Brombin efc6104b5b feat: add kernel32 services, guest threads and structured exceptions for PE64 processes 2026-07-31 21:45:18 +02:00