ReactOS 0.4.15-dev-8434-g155a7c7
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
17 OUT PCWSTR* FileSystemName);
18
19
23 _In_ PUNICODE_STRING DriveRoot,
24 _In_ PCWSTR FileSystemName,
27 _In_ BOOLEAN CheckOnlyIfDirty,
28 _In_ BOOLEAN ScanDrive,
30
33 _In_ PCWSTR DriveRoot,
34 _In_ PCWSTR FileSystemName,
37 _In_ BOOLEAN CheckOnlyIfDirty,
38 _In_ BOOLEAN ScanDrive,
40
41
45 _In_ PUNICODE_STRING DriveRoot,
46 _In_ PCWSTR FileSystemName,
47 _In_ FMIFS_MEDIA_FLAG MediaFlag,
52
55 _In_ PCWSTR DriveRoot,
56 _In_ PCWSTR FileSystemName,
57 _In_ FMIFS_MEDIA_FLAG MediaFlag,
62
63
64//
65// Bootsector routines
66//
67
68#define FAT_BOOTSECTOR_SIZE (1 * SECTORSIZE)
69#define FAT32_BOOTSECTOR_SIZE (1 * SECTORSIZE) // Counts only the primary sector.
70#define BTRFS_BOOTSECTOR_SIZE (3 * SECTORSIZE)
71#define NTFS_BOOTSECTOR_SIZE (16 * SECTORSIZE)
72
73typedef NTSTATUS
74(/*NTAPI*/ *PFS_INSTALL_BOOTCODE)(
75 IN PCWSTR SrcPath, // Bootsector source file (on the installation medium)
76 IN HANDLE DstPath, // Where to save the bootsector built from the source + partition information
77 IN HANDLE RootPartition); // Partition holding the (old) bootsector data information
78
81 IN PCWSTR SrcPath,
84
85#define InstallFat12BootCode InstallFatBootCode
86#define InstallFat16BootCode InstallFatBootCode
87
90 IN PCWSTR SrcPath,
93
96 IN PCWSTR SrcPath,
99
102 IN PCWSTR SrcPath,
105
106
107//
108// Formatting routines
109//
110
113 _In_ PPARTENTRY PartEntry,
116 _In_ BOOLEAN CheckOnlyIfDirty,
117 _In_ BOOLEAN ScanDrive,
119
122 _In_ PPARTENTRY PartEntry,
123 _In_ PCWSTR FileSystemName,
124 _In_ FMIFS_MEDIA_FLAG MediaFlag,
129
130
131//
132// FileSystem Volume Operations Queue
133//
134
135typedef enum _FSVOLNOTIFY
136{
141// FSVOLNOTIFY_STARTPARTITION, FSVOLNOTIFY_ENDPARTITION,
149 ChangeSystemPartition // FIXME: Deprecate!
151
152typedef enum _FSVOL_OP
153{
154/* Operations ****/
157/* Response actions ****/
163
165{
167 // PCWSTR NtPathPartition;
169
170/* Input information given by the 'FSVOLNOTIFY_STARTFORMAT' step ****/
177
179
180typedef struct _CHECK_VOLUME_INFO
181{
183 // PCWSTR NtPathPartition;
185
186/* Input information given by the 'FSVOLNOTIFY_STARTCHECK' step ****/
192
194
195typedef FSVOL_OP
198 _In_ FSVOLNOTIFY FormatStatus,
199 _In_ ULONG_PTR Param1,
200 _In_ ULONG_PTR Param2);
201
209
210/* EOF */
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
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:21
#define CALLBACK
Definition: compat.h:35
FMIFS_MEDIA_FLAG
Definition: fmifs.h:38
BOOLEAN(NTAPI * PFMIFSCALLBACK)(IN CALLBACKCOMMAND Command, IN ULONG SubAction, IN PVOID ActionInfo)
Definition: fmifs.h:89
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
NTSTATUS InstallFat32BootCode(IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition)
Definition: fsutil.c:464
_FSVOLNOTIFY
Definition: fsutil.h:136
@ FSVOLNOTIFY_STARTCHECK
Definition: fsutil.h:146
@ FSVOLNOTIFY_ENDQUEUE
Definition: fsutil.h:138
@ FSVOLNOTIFY_STARTSUBQUEUE
Definition: fsutil.h:139
@ FSVOLNOTIFY_ENDFORMAT
Definition: fsutil.h:144
@ FSVOLNOTIFY_STARTFORMAT
Definition: fsutil.h:143
@ FSVOLNOTIFY_STARTQUEUE
Definition: fsutil.h:137
@ FSVOLNOTIFY_ENDSUBQUEUE
Definition: fsutil.h:140
@ FSVOLNOTIFY_PARTITIONERROR
Definition: fsutil.h:142
@ FSVOLNOTIFY_CHECKERROR
Definition: fsutil.h:148
@ ChangeSystemPartition
Definition: fsutil.h:149
@ FSVOLNOTIFY_FORMATERROR
Definition: fsutil.h:145
@ FSVOLNOTIFY_ENDCHECK
Definition: fsutil.h:147
NTSTATUS 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:793
IN HANDLE IN HANDLE RootPartition
Definition: fsutil.h:77
enum _FSVOL_OP FSVOL_OP
NTSTATUS 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:376
struct _FORMAT_VOLUME_INFO * PFORMAT_VOLUME_INFO
BOOLEAN FsVolCommitOpsQueue(_In_ PPARTLIST PartitionList, _In_ PPARTENTRY SystemPartition, _In_ PPARTENTRY InstallPartition, _In_opt_ PFSVOL_CALLBACK FsVolCallback, _In_opt_ PVOID Context)
Definition: fsutil.c:1137
_FSVOL_OP
Definition: fsutil.h:153
@ FSVOL_FORMAT
Definition: fsutil.h:155
@ FSVOL_CHECK
Definition: fsutil.h:156
@ FSVOL_DOIT
Definition: fsutil.h:159
@ FSVOL_ABORT
Definition: fsutil.h:158
@ FSVOL_RETRY
Definition: fsutil.h:160
@ FSVOL_SKIP
Definition: fsutil.h:161
NTSTATUS InstallBtrfsBootCode(IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition)
Definition: fsutil.c:585
BOOLEAN GetRegisteredFileSystems(IN ULONG Index, OUT PCWSTR *FileSystemName)
Definition: fsutil.c:182
NTSTATUS InstallNtfsBootCode(IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition)
Definition: fsutil.c:692
enum _FSVOLNOTIFY FSVOLNOTIFY
NTSTATUS ChkdskPartition(_In_ PPARTENTRY PartEntry, _In_ BOOLEAN FixErrors, _In_ BOOLEAN Verbose, _In_ BOOLEAN CheckOnlyIfDirty, _In_ BOOLEAN ScanDrive, _In_opt_ PFMIFSCALLBACK Callback)
Definition: fsutil.c:757
NTSTATUS InstallFatBootCode(IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition)
Definition: fsutil.c:406
NTSTATUS 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:244
NTSTATUS 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:287
IN HANDLE DstPath
Definition: fsutil.h:76
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:196
struct _CHECK_VOLUME_INFO CHECK_VOLUME_INFO
NTSTATUS 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:311
struct _CHECK_VOLUME_INFO * PCHECK_VOLUME_INFO
BOOLEAN Verbose
Definition: fsutil.h:188
NTSTATUS ErrorStatus
Definition: fsutil.h:184
PFMIFSCALLBACK Callback
Definition: fsutil.h:191
BOOLEAN CheckOnlyIfDirty
Definition: fsutil.h:189
PPARTENTRY PartEntry
Definition: fsutil.h:182
BOOLEAN FixErrors
Definition: fsutil.h:187
BOOLEAN ScanDrive
Definition: fsutil.h:190
PFMIFSCALLBACK Callback
Definition: fsutil.h:176
BOOLEAN QuickFormat
Definition: fsutil.h:174
PPARTENTRY PartEntry
Definition: fsutil.h:166
NTSTATUS ErrorStatus
Definition: fsutil.h:168
FMIFS_MEDIA_FLAG MediaFlag
Definition: fsutil.h:172
PCWSTR FileSystemName
Definition: fsutil.h:171
const uint16_t * PCWSTR
Definition: typedefs.h:57
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 FSVOL_OP CALLBACK FsVolCallback(_In_opt_ PVOID Context, _In_ FSVOLNOTIFY FormatStatus, _In_ ULONG_PTR Param1, _In_ ULONG_PTR Param2)
Definition: usetup.c:2594
static PPARTLIST PartitionList
Definition: usetup.c:71
static PPARTENTRY InstallPartition
Definition: usetup.c:48
static PPARTENTRY SystemPartition
Definition: usetup.c:59
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
Definition: wdfinterrupt.h:458