mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00

CORE-13525 This greatly helps in reducing code complexity in some areas: code that previously iterated over all partitions of a given disk, just to find which ones were partitioned and contained a valid file system, now just have to iterate over mounted volumes. See in particular, `lib/utils/osdetect.c` and `lib/fsutil.c` . - Remove FORMATSTATE "Preformatted" enum value; - Cleanup osdetect code after introducing Volume support; - Some simplifications for FormatState. - Differentiate between 'new' partition and 'new' volume: * "New" partition: it has been created and added in the cached list, but not yet actually written into the disk. * "New" volume: newly-created volume (may be backed by a partition or not), not yet formatted. May exist on either new, or not new partition, or elsewhere. - Cache partition and volume NT device names. These do not change across repartitioning operations, as long as the partition or the filesystem volume hasn't been deleted/recreated. This avoids doing \Device\Harddisk%u\Partition%u sprintf's everytime we need to retrieve the given partition or volume device name. When a partition/fileysystem volume is "virtually" created (i.e. in the partition list, but not yet committed to disk and exposed to the OS), no device partition number and device name are available yet. In particular, validate that no manipulation of \Device\HarddiskM\Partition0 (i.e. the whole disk) is being made.
43 lines
1.5 KiB
C
43 lines
1.5 KiB
C
/*
|
|
* PROJECT: ReactOS Setup Library
|
|
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
|
* PURPOSE: NT 5.x family (MS Windows <= 2003, and ReactOS)
|
|
* operating systems detection code.
|
|
* COPYRIGHT: Copyright 2017-2024 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
/* Language-independent Vendor strings */
|
|
#define VENDOR_REACTOS L"ReactOS"
|
|
#define VENDOR_MICROSOFT L"Microsoft"
|
|
|
|
typedef struct _NTOS_INSTALLATION
|
|
{
|
|
LIST_ENTRY ListEntry;
|
|
// BOOLEAN IsDefault; // TRUE / FALSE whether this installation is marked as "default" in its corresponding loader configuration file.
|
|
USHORT Machine; // Target architecture of the NTOS installation
|
|
UNICODE_STRING SystemArcPath; // Normalized ARC path ("ArcSystemRoot")
|
|
UNICODE_STRING SystemNtPath; // Corresponding NT path ("NtSystemRoot")
|
|
PCWSTR PathComponent; // Pointer inside SystemNtPath.Buffer
|
|
ULONG DiskNumber;
|
|
ULONG PartitionNumber;
|
|
PVOLENTRY Volume; // PVOLINFO
|
|
WCHAR InstallationName[MAX_PATH];
|
|
WCHAR VendorName[MAX_PATH];
|
|
// CHAR Data[ANYSIZE_ARRAY];
|
|
} NTOS_INSTALLATION, *PNTOS_INSTALLATION;
|
|
|
|
// EnumerateNTOSInstallations
|
|
PGENERIC_LIST
|
|
CreateNTOSInstallationsList(
|
|
_In_ PPARTLIST PartList);
|
|
|
|
/*
|
|
* FindSubStrI(PCWSTR str, PCWSTR strSearch) :
|
|
* Searches for a sub-string 'strSearch' inside 'str', similarly to what
|
|
* wcsstr(str, strSearch) does, but ignores the case during the comparisons.
|
|
*/
|
|
PCWSTR FindSubStrI(PCWSTR str, PCWSTR strSearch);
|
|
|
|
/* EOF */
|