summaryrefslogtreecommitdiffstats
path: root/private/utils/cuhpfs/cuhpfs.hxx
blob: 5efa7873d90dafb2e0abac2b3de9beac8b65417d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/*++

Copyright (c) 1991  Microsoft Corporation

Module Name:

    cuhpfs.hxx

Abstract:

    This module contains function prototypes for the HPFS conversion
    functions.

Author:

    Bill McJohn (billmc) 2-Dec-1991

Environment:

	ULIB, User Mode


--*/

#include "untfs.hxx"
#include "uhpfs.hxx"
#include "ifsentry.hxx"
#include "dirblk.hxx"

DECLARE_CLASS( LOG_IO_DP_DRIVE );
DECLARE_CLASS( HPFS_VOL );
DECLARE_CLASS( NTFS_BITMAP );
DECLARE_CLASS( HPFS_MAIN_BITMAP );
DECLARE_CLASS( HPFS_VOL );
DECLARE_CLASS( CASEMAP );
DECLARE_CLASS( NTFS_MFT_FILE );
DECLARE_CLASS( FNODE );
DECLARE_CLASS( NTFS_FILE_RECORD_SEGMENT );
DECLARE_CLASS( DIRBLK );
DECLARE_CLASS( NTFS_INDEX_TREE );
DECLARE_CLASS( NUMBER_SET );
DECLARE_CLASS( NAME_LOOKUP_TABLE );

extern "C" BOOLEAN
InitializeCuhpfs (
    PVOID DllHandle,
    ULONG Reason,
    PCONTEXT Context
    );

BOOLEAN
FAR APIENTRY
ConvertHPFSVolume(
    IN OUT  PHPFS_VOL           Drive,
    IN      PCWSTRING           TargetFileSystem,
    IN      PCNAME_LOOKUP_TABLE NameTable OPTIONAL,
	IN OUT  PMESSAGE            Message,
	IN		BOOLEAN 			Verbose,
	OUT 	PCONVERT_STATUS 	Status
    );

extern "C" BOOLEAN
FAR APIENTRY
ConvertHPFS(
    IN      PCWSTRING       NtDriveName,
    IN      PCWSTRING       TargetFileSystem,
    IN OUT  PMESSAGE        Message,
    IN      BOOLEAN         Verbose,
    OUT     PCONVERT_STATUS Status
    );

BOOLEAN
ConvertToNtfs(
    IN OUT  PHPFS_VOL   HpfsVol,
    IN      PCNAME_LOOKUP_TABLE NameTable OPTIONAL,
    IN      PNUMBER_SET BadSectors,
    IN OUT  PMESSAGE    Message,
    IN      BOOLEAN     Verbose,
    OUT     PBOOLEAN    Corrupt
    );

BOOLEAN
ConvertFileFnodeToNtfs(
    IN OUT PLOG_IO_DP_DRIVE             Drive,
    IN OUT PNTFS_BITMAP                 VolumeBitmap,
    IN OUT PHPFS_MAIN_BITMAP            HpfsOnlyBitmap,
    IN OUT PNTFS_MFT_FILE               Mft,
    IN OUT PFNODE                       Fnode,
    IN OUT PNTFS_FILE_RECORD_SEGMENT    TargetFrs,
    IN     ULONG                        FileSize,
    IN OUT PBOOLEAN                     IsCorrupt,
    IN     PCWSTRING                    FullPath
    );


BOOLEAN
ConvertDirectoryToNtfs(
    IN OUT PLOG_IO_DP_DRIVE             Drive,
    IN     PCNAME_LOOKUP_TABLE          NameTable OPTIONAL,
    IN OUT PMESSAGE                     Message,
    IN OUT PNTFS_BITMAP                 VolumeBitmap,
    IN OUT PHPFS_MAIN_BITMAP            HpfsOnlyBitmap,
    IN     PCASEMAP                     Casemap,
    IN OUT PNTFS_MFT_FILE               Mft,
    IN     ULONG                        ClustersPerIndexBuffer,
    IN     LBN                          RootDirblkLbn,
    IN OUT PNTFS_FILE_RECORD_SEGMENT    TargetFrs,
    IN OUT PBOOLEAN                     IsCorrupt,
    IN     BOOLEAN                      Verbose,
    IN OUT PVOID                        NameBuffer,
    IN     ULONG                        NameBufferLength,
    IN OUT PVOID                        EaBuffer,
    IN     ULONG                        EaBufferLength,
    IN     ULONG                        Level,
    IN     PCWSTRING                    DirectoryPath
    );


BOOLEAN
ConvertDirentToNtfs(
    IN OUT PLOG_IO_DP_DRIVE         Drive,
    IN     PCNAME_LOOKUP_TABLE      NameTable OPTIONAL,
    IN OUT PMESSAGE                 Message,
    IN OUT PNTFS_BITMAP             VolumeBitmap,
    IN OUT PHPFS_MAIN_BITMAP        HpfsOnlyBitmap,
    IN     PCASEMAP                 Casemap,
    IN OUT PNTFS_MFT_FILE           Mft,
    IN     ULONG                    ClustersPerIndexBuffer,
    IN     PDIRENTD                 DirectoryEntry,
    IN OUT PNTFS_INDEX_TREE         ParentIndex,
    IN     MFT_SEGMENT_REFERENCE    ParentSegmentReference,
    IN OUT PBOOLEAN                 IsCorrupt,
    IN     BOOLEAN                  Verbose,
    IN OUT PVOID                    NameBuffer,
    IN     ULONG                    NameBufferLength,
    IN OUT PVOID                    EaBuffer,
    IN     ULONG                    EaBufferLength,
    IN     ULONG                    Level,
    IN     PCWSTRING                ParentDirectoryPath,
    IN     BOOLEAN                  ConvertLongNames
    );


BOOLEAN
ConvertDirblkToNtfs(
    IN OUT PLOG_IO_DP_DRIVE             Drive,
    IN     PCNAME_LOOKUP_TABLE          NameTable OPTIONAL,
    IN OUT PMESSAGE                     Message,
    IN OUT PNTFS_BITMAP                 VolumeBitmap,
    IN OUT PHPFS_MAIN_BITMAP            HpfsOnlyBitmap,
    IN     PCASEMAP                     Casemap,
    IN OUT PNTFS_MFT_FILE               Mft,
    IN     ULONG                        ClustersPerIndexBuffer,
    IN     PDIRBLK                      Dirblk,
    IN OUT PNTFS_INDEX_TREE             NtfsIndex,
    IN     MFT_SEGMENT_REFERENCE        IndexSegmentReference,
    IN OUT PBOOLEAN                     IsCorrupt,
    IN     BOOLEAN                      Verbose,
    IN OUT PVOID                        NameBuffer,
    IN     ULONG                        NameBufferLength,
    IN OUT PVOID                        EaBuffer,
    IN     ULONG                        EaBufferLength,
    IN     ULONG                        Level,
    IN     PCWSTRING                    DirectoryPath,
    IN     BOOLEAN                      ConvertLongNames
    );

BOOLEAN
ConvertEasToNtfs(
    IN OUT PLOG_IO_DP_DRIVE             Drive,
    IN OUT PNTFS_BITMAP                 VolumeBitmap,
    IN OUT PNTFS_MFT_FILE               Mft,
    IN OUT PFNODE                       Fnode,
    IN OUT PNTFS_FILE_RECORD_SEGMENT    TargetFrs,
    IN     ULONG                        DirentEaSize,
    IN     ULONG                        CodepageId,
    IN OUT PBOOLEAN                     IsCorrupt,
    IN OUT PVOID                        NameBuffer,
    IN     ULONG                        NameBufferLength,
    IN OUT PVOID                        EaBuffer,
    IN     ULONG                        EaBufferLength
    );