CORE-9023
Add support for all the supported filesystems: FAT/FATX, NTFS,
ISO, EXT, BTRFS, as well as for files loaded via PXE.
arc.h:
- Add `FILEATTRIBUTES` enumeration;
- Remove non-existing `CreateReadOnly` and `SupersedeReadOnly`
`OPENMODE` values; add missing `CreateReadWrite`.
Suppose the list of devices contains, for example listed in this order:
`multi(0)disk(0)rdisk(0)partition(1)`,
followed by:
`multi(0)disk(0)rdisk(0)`,
then if someone attempts to open `multi(0)disk(0)rdisk(0)`, the code
would erroneously open `multi(0)disk(0)rdisk(0)partition(1)` instead.
Device name lookup now verifies that the device name being tested has
the same length as the one being opened.
Noticed by user "Xen", see:
https://reactos.org/forum/viewtopic.php?p=144840#p144840
> Wrong name comparison in ArcOpen (can open "device()partition()"
> instead of "device()" that was really requested)
CORE-9023
And more accurately detect and report disks:
using `InquiryBuffer.DeviceType`, differentiate between "rigid" disks,
floppy disks, and CD-ROM drives.
CORE-9023
Some of this determination is platform-specific (e.g. BIOS-based PC vs.
NEC PC-98 vs. Xbox), and is done in a per-platform `DiskGetConfigType()`
routine.
This routine is then invoked by `hwdisk.c!DiskOpen()` and `PcInitializeBootDevices()`.
CORE-9023
The purpose of this file is to contain all the known `_S_IF*` flags
and `_S_IS*` macros, some of which are used by the FreeLoader *nix-based
file-systems.
CORE-9023
Do the seek to the beginning only once before starting the loop,
but avoid doing it for each chunk read: we base ourselves on the
fact that read operations automatically advance the internal read
pointer (per the specs).
CORE-14603 CORE-9023
The RamDisk path specified with `/RDPATH=` can be a path to a block
device, like a disk partition, or the current boot disk (a ReactOS
specific feature added in commit 9b70d4380c), instead of being only
a file (as with Windows' NTLDR).
In this case, the `StartingAddress` and `EndingAddress` returned by
`ArcGetFileInformation()` are, per the specs, the start and end
positions of the partition as byte offsets from the start of the disk.
Therefore, the size of the partition is `== EndingAddress - StartingAddress`.
+ Add diagnostic traces in `RamDiskLoadVirtualFile()` and `RamDiskInitialize()`.
Co-authored-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Croatian and Slovenian share the same keyboard layout file.
- Add the Slovenian keyboard layout to the registry.
- Modify the keyboard layout file description accordingly.
CORE-16194
- Add the Colemak keyboard layout. It is not done yet. Some deadkey translations are still missing.
- Add missing strings for the German Extended (E1) keyboard layout.
CORE-4463
- Move BIOS-specific `EXTENDED_GEOMETRY` structure to pcdisk.c
- Zero out the transfer buffer for INT 13h, function 48h before
invocation. This ensures that any random data is removed and
that some broken BIOSes behave better.
- Use a more suitable type for the pointer to the transfer buffer,
so that we can use more human-manageable member names in TRACEs
instead of magic buffer offsets.
Which is also an addendum to commit b3f11cfb38 (r17484).
The Enhanced Disk Drive Specification tells us that if the (far) pointer
to the Device Parameter Table Extension is set to FFFF:FFFF, the pointer
is invalid.
However there are some BIOSes, incl UEFI ones when running in Legacy
mode (e.g. GIGABYTE UEFI DualBIOS), that set this pointer to 0000:0000
instead, which is also an invalid value.
- Disable "Log Off" from the Start Menu and the C-A-D Security dialog;
- Disable the "Lock Workstation" and "Change Password" buttons in the
Security dialog.
These are only "UI"-usability features to prevent the user from
logging off when running the LiveCD. (Logging off from the SYSTEM
account, and changing its password, don't make much sense.)
CORE-11397
Windows uses the keyboard layout IDs of the Ristome, Ergo and Neo layouts for the German(IBM), German Extended 1 and German Extended 2 keyboard layouts.
This just makes it so ACPI.sys is always loaded and copied by the bootcd no matter what on amd64.
On x86 it can depend on whether we're using an ACPI hal but is set up to never boot with ACPI on the bootcd.
Win2K internat.exe uses this section.
WinXP and Win2k3 have this section.
JIRA issue: CORE-19268
- Add [KbdLayoutIds] section and add values to intl.inf.
- Add some missing "Layout Id" for "SYSTEM\
CurrentControlSet\Control\Keyboard Layouts" of
hivesys.inf.
Improve CTF IME customization.
Use the proper names for CTF IME.
JIRA issue: CORE-19268
- In the registry key "HKLM\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\IMM", add
DontLoadCTFIME value and set it to 1.
- Delete LoadCTFIME value to avoid user
confusing.
- Rename UserIsCiceroEnabled function
as UserIsCTFIMEEnabled.
- Rename SRVINFO_CICERO_ENABLED
flag as SRVINFO_CTFIME_ENABLED.
When an NTFS partition is created with Windows and modified with Linux
(see below), the NTLDR/BOOTMGR will compare the file names ignoring the
case of the files, while FreeLdr does not and the same hack is on Btrfs
file name comparison.
This PR is necessary because the case of the file names on registry, etc.
may not always be consistent!
How to reproduce:
- Try to install Windows with NTFS and install FreeLdr on it;
- Try to modify Windows partition on Linux like creating/copying some new files;
- Try to boot with FreeLdr (it will fail if the hive file path case is different
than the actual file path);
- Try to boot with NTLDR/BOOTMGR (it will work finally reaching the desktop).
Make FreeLoader print a notice message before it passes the control
to the kernel, if kernel-mode debugging is enabled via boot options.
This can be helpful for people who may forget that they're booting
in debug mode (the default boot option also for the bootcd) and they
need to attach a debugger for the boot process to continue.
- choose VGA adapter outside of driver initialization loop
- choose primary adapter outside of driver initialization loop
- link VGA adapter to primary adapter at the end
- only set DISPLAY_DEVICE_PRIMARY_DEVICE in this function
Also mark VgaSave driver as SystemStart instead of Disabled,
so it is available if main display driver doesn't work.
Implements a couple of extra commands in IShellBrowser and adds support for the AppKeys fallback registry key (used when the foreground application does not handle the command).
Sorry this is something I had to do, I should have investigated deeper
before approving it and that's on me so ill take this over and get this
done. and credit you once again. Thank you @ILauncherDev
This reverts commit 185225a5fc.