ReactOS 0.4.16-dev-747-gbc52d5f
fsutil.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Setup Library
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: Filesystem Format and ChkDsk support functions
5 * COPYRIGHT: Copyright 2003-2019 Casper S. Hornstrup <chorns@users.sourceforge.net>
6 * Copyright 2017-2024 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
7 */
8
9#pragma once
10
11#include <fmifs/fmifs.h>
12
18 OUT PCWSTR* FileSystemName);
19
20
25 _In_ PUNICODE_STRING DriveRoot,
26 _In_ PCWSTR FileSystemName,
29 _In_ BOOLEAN CheckOnlyIfDirty,
30 _In_ BOOLEAN ScanDrive,
32
36 _In_ PCWSTR DriveRoot,
37 _In_ PCWSTR FileSystemName,
40 _In_ BOOLEAN CheckOnlyIfDirty,
41 _In_ BOOLEAN ScanDrive,
43
44
49 _In_ PUNICODE_STRING DriveRoot,
50 _In_ PCWSTR FileSystemName,
51 _In_ FMIFS_MEDIA_FLAG MediaFlag,
56
60 _In_ PCWSTR DriveRoot,
61 _In_ PCWSTR FileSystemName,
62 _In_ FMIFS_MEDIA_FLAG MediaFlag,
67
68
69//
70// Bootsector routines
71//
72
73#define FAT_BOOTSECTOR_SIZE (1 * SECTORSIZE)
74#define FAT32_BOOTSECTOR_SIZE (1 * SECTORSIZE) // Counts only the primary sector.
75#define BTRFS_BOOTSECTOR_SIZE (3 * SECTORSIZE)
76#define NTFS_BOOTSECTOR_SIZE (16 * SECTORSIZE)
77
78typedef NTSTATUS
79(/*NTAPI*/ *PFS_INSTALL_BOOTCODE)(
80 IN PCWSTR SrcPath, // Bootsector source file (on the installation medium)
81 IN HANDLE DstPath, // Where to save the bootsector built from the source + partition information
82 IN HANDLE RootPartition); // Partition holding the (old) bootsector data information
83
86 IN PCWSTR SrcPath,
89
90#define InstallFat12BootCode InstallFatBootCode
91#define InstallFat16BootCode InstallFatBootCode
92
95 IN PCWSTR SrcPath,
98
101 IN PCWSTR SrcPath,
104
107 IN PCWSTR SrcPath,
110
111
112//
113// Formatting routines
114//
115
117NTAPI
119 _In_ PPARTENTRY PartEntry,
122 _In_ BOOLEAN CheckOnlyIfDirty,
123 _In_ BOOLEAN ScanDrive,
125
127NTAPI
129 _In_ PPARTENTRY PartEntry,
130 _In_ PCWSTR FileSystemName,
131 _In_ FMIFS_MEDIA_FLAG MediaFlag,
136
137
138//
139// FileSystem Volume Operations Queue
140//
141
142typedef enum _FSVOLNOTIFY
143{
148// FSVOLNOTIFY_STARTPARTITION, FSVOLNOTIFY_ENDPARTITION,
156 ChangeSystemPartition // FIXME: Deprecate!
158
159typedef enum _FSVOL_OP
160{
161/* Operations ****/
164/* Response actions ****/
170
172{
174 // PCWSTR NtPathPartition;
176
177/* Input information given by the 'FSVOLNOTIFY_STARTFORMAT' step ****/
184
186
187typedef struct _CHECK_VOLUME_INFO
188{
190 // PCWSTR NtPathPartition;
192
193/* Input information given by the 'FSVOLNOTIFY_STARTCHECK' step ****/
199
201
202typedef FSVOL_OP
205 _In_ FSVOLNOTIFY FormatStatus,
206 _In_ ULONG_PTR Param1,
207 _In_ ULONG_PTR Param2);
208
210NTAPI
217
218/* EOF */
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
static FSVOL_OP CALLBACK FsVolCallback(_In_opt_ PVOID Context, _In_ FSVOLNOTIFY FormatStatus, _In_ ULONG_PTR Param1, _In_ ULONG_PTR Param2)
Definition: reactos.c:1291
#define SystemVolume
Definition: reactos.c:51
#define InstallVolume
Definition: reactos.c:46
BOOL FixErrors
Definition: chkdsk.c:69
BOOL Verbose
Definition: chkdsk.c:72
BOOL QuickFormat
Definition: format.c:66
PWCHAR Label
Definition: format.c:70
DWORD ClusterSize
Definition: format.c:67
#define NTSTATUS
Definition: precomp.h:19
#define CALLBACK
Definition: compat.h:35
FMIFS_MEDIA_FLAG
Definition: fmifs.h:52
BOOLEAN(NTAPI * PFMIFSCALLBACK)(IN CALLBACKCOMMAND Command, IN ULONG SubAction, IN PVOID ActionInfo)
Definition: fmifs.h:103
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
NTSTATUS InstallFat32BootCode(IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition)
Definition: fsutil.c:469
_FSVOLNOTIFY
Definition: fsutil.h:143
@ FSVOLNOTIFY_STARTCHECK
Definition: fsutil.h:153
@ FSVOLNOTIFY_ENDQUEUE
Definition: fsutil.h:145
@ FSVOLNOTIFY_STARTSUBQUEUE
Definition: fsutil.h:146
@ FSVOLNOTIFY_ENDFORMAT
Definition: fsutil.h:151
@ FSVOLNOTIFY_STARTFORMAT
Definition: fsutil.h:150
@ FSVOLNOTIFY_STARTQUEUE
Definition: fsutil.h:144
@ FSVOLNOTIFY_ENDSUBQUEUE
Definition: fsutil.h:147
@ FSVOLNOTIFY_PARTITIONERROR
Definition: fsutil.h:149
@ FSVOLNOTIFY_CHECKERROR
Definition: fsutil.h:155
@ ChangeSystemPartition
Definition: fsutil.h:156
@ FSVOLNOTIFY_FORMATERROR
Definition: fsutil.h:152
@ FSVOLNOTIFY_ENDCHECK
Definition: fsutil.h:154
NTSTATUS NTAPI FormatFileSystem(_In_ PCWSTR DriveRoot, _In_ PCWSTR FileSystemName, _In_ FMIFS_MEDIA_FLAG MediaFlag, _In_opt_ PCWSTR Label, _In_ BOOLEAN QuickFormat, _In_ ULONG ClusterSize, _In_opt_ PFMIFSCALLBACK Callback)
Definition: fsutil.c:381
IN HANDLE IN HANDLE RootPartition
Definition: fsutil.h:82
BOOLEAN NTAPI GetRegisteredFileSystems(IN ULONG Index, OUT PCWSTR *FileSystemName)
Definition: fsutil.c:183
enum _FSVOL_OP FSVOL_OP
struct _FORMAT_VOLUME_INFO * PFORMAT_VOLUME_INFO
NTSTATUS NTAPI ChkdskFileSystem(_In_ PCWSTR DriveRoot, _In_ PCWSTR FileSystemName, _In_ BOOLEAN FixErrors, _In_ BOOLEAN Verbose, _In_ BOOLEAN CheckOnlyIfDirty, _In_ BOOLEAN ScanDrive, _In_opt_ PFMIFSCALLBACK Callback)
Definition: fsutil.c:290
_FSVOL_OP
Definition: fsutil.h:160
@ FSVOL_FORMAT
Definition: fsutil.h:162
@ FSVOL_CHECK
Definition: fsutil.h:163
@ FSVOL_DOIT
Definition: fsutil.h:166
@ FSVOL_ABORT
Definition: fsutil.h:165
@ FSVOL_RETRY
Definition: fsutil.h:167
@ FSVOL_SKIP
Definition: fsutil.h:168
NTSTATUS NTAPI FormatFileSystem_UStr(_In_ PUNICODE_STRING DriveRoot, _In_ PCWSTR FileSystemName, _In_ FMIFS_MEDIA_FLAG MediaFlag, _In_opt_ PUNICODE_STRING Label, _In_ BOOLEAN QuickFormat, _In_ ULONG ClusterSize, _In_opt_ PFMIFSCALLBACK Callback)
Definition: fsutil.c:315
NTSTATUS InstallBtrfsBootCode(IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition)
Definition: fsutil.c:590
BOOLEAN NTAPI FsVolCommitOpsQueue(_In_ PPARTLIST PartitionList, _In_ PVOLENTRY SystemVolume, _In_ PVOLENTRY InstallVolume, _In_opt_ PFSVOL_CALLBACK FsVolCallback, _In_opt_ PVOID Context)
Definition: fsutil.c:1097
NTSTATUS InstallNtfsBootCode(IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition)
Definition: fsutil.c:697
enum _FSVOLNOTIFY FSVOLNOTIFY
NTSTATUS InstallFatBootCode(IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition)
Definition: fsutil.c:411
IN HANDLE DstPath
Definition: fsutil.h:81
NTSTATUS NTAPI FormatPartition(_In_ PPARTENTRY PartEntry, _In_ PCWSTR FileSystemName, _In_ FMIFS_MEDIA_FLAG MediaFlag, _In_opt_ PCWSTR Label, _In_ BOOLEAN QuickFormat, _In_ ULONG ClusterSize, _In_opt_ PFMIFSCALLBACK Callback)
Definition: fsutil.c:851
struct _FORMAT_VOLUME_INFO FORMAT_VOLUME_INFO
FSVOL_OP(CALLBACK * PFSVOL_CALLBACK)(_In_opt_ PVOID Context, _In_ FSVOLNOTIFY FormatStatus, _In_ ULONG_PTR Param1, _In_ ULONG_PTR Param2)
Definition: fsutil.h:203
struct _CHECK_VOLUME_INFO CHECK_VOLUME_INFO
NTSTATUS NTAPI ChkdskPartition(_In_ PPARTENTRY PartEntry, _In_ BOOLEAN FixErrors, _In_ BOOLEAN Verbose, _In_ BOOLEAN CheckOnlyIfDirty, _In_ BOOLEAN ScanDrive, _In_opt_ PFMIFSCALLBACK Callback)
Definition: fsutil.c:788
NTSTATUS NTAPI ChkdskFileSystem_UStr(_In_ PUNICODE_STRING DriveRoot, _In_ PCWSTR FileSystemName, _In_ BOOLEAN FixErrors, _In_ BOOLEAN Verbose, _In_ BOOLEAN CheckOnlyIfDirty, _In_ BOOLEAN ScanDrive, _In_opt_ PFMIFSCALLBACK Callback)
Definition: fsutil.c:246
struct _CHECK_VOLUME_INFO * PCHECK_VOLUME_INFO
BOOLEAN Verbose
Definition: fsutil.h:195
NTSTATUS ErrorStatus
Definition: fsutil.h:191
PVOLENTRY Volume
Definition: fsutil.h:189
PFMIFSCALLBACK Callback
Definition: fsutil.h:198
BOOLEAN CheckOnlyIfDirty
Definition: fsutil.h:196
BOOLEAN FixErrors
Definition: fsutil.h:194
BOOLEAN ScanDrive
Definition: fsutil.h:197
PFMIFSCALLBACK Callback
Definition: fsutil.h:183
BOOLEAN QuickFormat
Definition: fsutil.h:181
NTSTATUS ErrorStatus
Definition: fsutil.h:175
PVOLENTRY Volume
Definition: fsutil.h:173
FMIFS_MEDIA_FLAG MediaFlag
Definition: fsutil.h:179
PCWSTR FileSystemName
Definition: fsutil.h:178
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define NTAPI
Definition: typedefs.h:36
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
static PPARTLIST PartitionList
Definition: usetup.c:74
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
Definition: wdfinterrupt.h:458