Performance improvement. This PR
will improve the speed of loading
a large file.
JIRA issue: CORE-19898
- Change 2 passes to 1 pass on
ANSI/UTF-8, omitting precise
buffer size calculation.
- Change LocalReAlloc calls to
LocalAlloc.
- ReadText function now returns
HLOCAL and no longer takes
phLocal.
CORE-9069, CORE-13525, RELEASE-11
This new BootCD contains the functionality of both the original bootcd
(text-mode 1st-stage installer) and the livecd (that will include the
1st-stage GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes
the need for the so-called "hybridcd" ISO.
Some details:
- The "hybridcd" build target is completely removed, since now the new
BootCD *is* basically what we used to call "hybridcd".
- The "livecd" build target is kept so far (to minimize the code changes),
but internally I start to refer to it as "LiveImage", and is reduced
to a minimum.
A minimal non-bootable "liveimg.iso" is built (but currently not
included within the BootCD). Its purpose will be to implement the
"ReactOS Live" functionality as a RAMDISK.
(We currently don't support other file formats apart from ISO and
flat disk for a RAMDISK).
The "ReactOS Live" (non-RAMDISK) is implemented by adding to the
BootCD file tree the files from the LiveImage.
These files add two root directories, "Profiles" and "reactos"
(which is the SystemRoot for the non-ramdisk LiveImage).
- The minimal text-mode ReactOS installation used for the 1st-stage
installer, including USETUP itself, and the executable for the
1st-stage GUI installer and the reactos.cab (installation source),
are moved to the root directory called "i386" (ideally, one directory
per architecture).
- The "bootcdregtest" target, i.e. the ISOs we feed our testbots with,
are left untouched, i.e. they are only constituted of the 1st-stage
text-mode installation only, but placed in a per-architecture root
directory ("i386", etc. as for the bootcd).
- Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made
available via the Advanced Boot Options F8 menu in Debug builds, for
testing purposes only, in a subsequent commit.
This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273
Supporting CTF IMEs. This FIFO
will be used in TRANSMSG handling.
JIRA issue: CORE-19360
- Add base/ctf/cicero/cicfifo.h.
- Implement CicFirstInFirstOut
template class.
Addendum to commit c498d0930a.
`SmpTranslateSystemPartitionInformation()`: Reset the `DirInfo->Name.Buffer`
to use the `DirInfoBuffer` scratch area, before doing the OS boot drive letter
fallback. Otherwise, writing directly to `DirInfo->Name.Buffer` would
use its old value, that is going to be `NULL` when the calls to
`NtQueryDirectoryObject()` failed, and this would induce a memory access
crash.
Take also the opportunity to use structures embedding the
`KEY_VALUE_PARTIAL_INFORMATION` and `OBJECT_DIRECTORY_INFORMATION`
data headers, instead of straight `CHAR` arrays. This allows the
structures to use the correct memory alignments required by these
data headers.
- Set the ip address, subnet mask and default gateway when an alternate configuration has been configured.
- Set registry values for the alternate configuration and APIPA.
In `SmpTranslateSystemPartitionInformation()`, fall back to using the
OS boot drive letter if none was found to be assigned to the SystemPartition.
Otherwise, just fail if any other error was encountered.
(This behaviour has been introduced in a post-SP1 Windows 7 update.)
Additionally, simplify very slightly the code.
wlanconf\wlanconf.c(592):
warning C4267: '=': conversion from 'size_t' to 'DWORD', possible loss of data
wlanconf\wlanconf.c(602),(683):
warning C4267: '=': conversion from 'size_t' to 'ULONG', possible loss of data
netsh\helper.c(84):
warningC4267: 'function': conversion from 'size_t' to 'DWORD', possible loss of data
netsh\netsh.c(65):
warning C4267: '+=': conversion from 'size_t' to 'INT', possible loss of data
net\cmdLocalGroup.c(125):
warning C4267: '=': conversion from 'size_t' to 'DWORD', possible loss of data
net\cmdShare.c(115),(128),(142):
warning C4267: '=': conversion from 'size_t' to 'INT', possible loss of data
net\cmdUse.c(89),(178),(194):
warning C4267: '=': conversion from 'size_t' to 'DWORD', possible loss of data
net\cmdUser.c(597),(631),(676):
warning C4267: '=': conversion from 'size_t' to 'INT', possible loss of data
ipconfig\ipconfig.c(236):
warning C4267: '=': conversion from 'size_t' to 'int', possible loss of data
ipconfig\ipconfig.c(263),(306),(380):
warning C4267: '=': conversion from 'size_t' to 'DWORD', possible loss of data
ipconfig\ipconfig.c(303):
warning C4267: 'initializing': conversion from 'size_t' to 'DWORD', possible loss of data
ipconfig\ipconfig.c(1318): warning C4267: 'function': conversion from 'size_t' to 'DWORD', possible loss of data
dwnl\dwnl.c(387):
warning C4267: 'function': conversion from 'size_t' to 'DWORD', possible loss of data
dwnl\dwnl.c(401):
warning C4267: '=': conversion from 'size_t' to 'DWORD', possible loss of data
whoami\whoami.c(134):
warning C4267: 'initializing': conversion from 'size_t' to 'DWORD', possible loss of data
whoami\whoami.c(241),(256):
warning C4267: 'initializing': conversion from 'size_t' to 'UINT', possible loss of data
CORE-20537
- `WhoamiSetTable()`: Specify the correct size for allocating a buffer
for a NUL-terminated UTF16 string (previously, only half the space for
the NUL terminator was considered).
This caused a heap corruption when the corresponding NUL-terminate
string was then copied into this buffer, and potentially leading to
reading past the end of the string (since no real NUL terminator
would be found).
- `WhoamiPrintTable()`: Just make it do what it needs to do: print the
table and nothing more: no "side-effect" behaviour like table freeing.
- Instead, add a `WhoamiFreeTable()` routine whose purpose is just to
free the table. And the tables are freed in the routines where they
have been previously allocated.
- `WhoamiPrintTable()`:
* Allocate a column-lengths table *ONLY* when needed, i.e. when
printing the table in "table" format. When printing it in "list"
format, there is no need to allocate anything and we can instead
use only a single variable.
* The old code handling "those pesky ':'" -- used when tables are
displayed in list format, using: `whoami /all /fo list` -- was buggy,
because it was patching the table header names, writing a ':' and a
NUL-terminator past the end of the allocated string buffer (see bug
described above in `WhoamiSetTable()`). As a result, once the table
was freed, a heap corruption would happen, leading to a crash.
Now, displaying the ':' is handled as part of the wprintf()-formatting
table item string.
* For developers, two ways of displaying these ':' are proposed:
the way Windows displays the table in "list" format, where the ':'
directly follow the item names in the 1st column; and a "nicer" one
(to my taste!), where all the ':' are vertically aligned -- currently
disabled.
The point of kernel32_vista was to provide a dll that can be used for winesyncs to still have NT6 APIs.
We're now switching to an architecture where we'll have kernelbase OR a kernel32_win7 depending on NT target compile
but this means that for an ANSI exe such as this, we need an alternative solution.
Thankfully it's pretty much only for this but just in case i made it a library.
In particular:
- `IDS_NOSET`: When the user tries `hostname -s ...`, tell them that for
changing the computer host's name, one has to go in the "Computer Name"
tab in the "System" control panel applet.
NOTE: You may observe that Windows' hostname says instead,
"Use the Network Control Panel Applet to set hostname."
This piece of information is wrong since Windows 2000. Indeed:
* From NT 3.1 to NT 4, one had to change the host's name via the
"Network" control panel applet; the message was accurate back then.
* Since Windows 2000, one changes the computer's host name via the
"Network Identification" (Win2000) / "Computer Name" (WinXP and above)
tab of the "System" properties Control Panel applet.
* In addition, the ony "Network" feature in the Control Panel is the
"Network Connections" special folder and doesn't deal with the host name.
- Use the ConUtils library for uniform output (on console or redirected)
of localized string resources/messages. Supersedes PR #8739.
- Improve output of last-errors by showing their description, only
falling back to showing the error number if no description exists.