-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathifs.h
150 lines (140 loc) · 6.24 KB
/
ifs.h
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
/***************************************************************************
*
* Copyright (c) 1997, 1998 Timpanogas Research Group, Inc. All Rights
* Reserved.
*
* AUTHOR : Jeff V. Merkey
* FILE : IFS.H
* DESCRIP : Installable File System for MANOS v1.0
* DATE : November 23, 1997
*
*
***************************************************************************/
#include "types.h"
#define MAX_FILESYSTEMS 20
#define MSDOS_FS 0x00000000
#define FASTFAT_FS 0x00000001
#define VNDI_FS 0x00000002
#define MULTITHREAD_FS 0x00000010
#define REAL_MODE_FS 0x00000011
typedef struct _IFS_STRUCTURE
{
LONG FSType;
LONG BindParameters;
LONG AllocatedFS;
LONG (*OpenFile)(BYTE *, LONG);
LONG (*RenameFile)(BYTE *, BYTE *);
LONG (*RenameFileHandled)(LONG, BYTE *);
LONG (*DeleteFile)(BYTE *);
LONG (*DeleteFileHandled)(LONG);
LONG (*CreateFile)(BYTE *, LONG);
LONG (*CloseFile)(LONG);
LONG (*ReadFile)(LONG, void *, LONG);
LONG (*WriteFile)(LONG, void *, LONG);
LONG (*FileSeek)(LONG, LONG, LONG);
LONG (*FlushCache)(LONG);
LONG (*FileSize)(BYTE *);
LONG (*FileSizeHandled)(LONG);
LONG (*FindFirst)(BYTE **);
LONG (*FindNext)(BYTE **);
LONG (*DirectOpenFile)(BYTE *, LONG);
LONG (*DirectRenameFile)(BYTE *, BYTE *);
LONG (*DirectRenameFileHandled)(LONG, BYTE *);
LONG (*DirectDeleteFile)(BYTE *);
LONG (*DirectDeleteFileHandled)(LONG);
LONG (*DirectCreateFile)(BYTE *, LONG);
LONG (*DirectCloseFile)(LONG);
LONG (*DirectReadFile)(LONG, void *, LONG);
LONG (*DirectWriteFile)(LONG, void *, LONG);
LONG (*DirectFileSeek)(LONG, LONG, LONG);
LONG (*FileLock)(LONG, LONG, LONG);
LONG (*FileUnlock)(LONG);
LONG (*DirectFileLock)(LONG, LONG, LONG);
LONG (*DirectFileUnlock)(LONG);
LONG (*StartTransaction)(LONG);
LONG (*EndTransaction)(LONG);
LONG (*AbortTransaction)(LONG);
LONG (*CreateDirectory)(BYTE *Path);
LONG (*DeleteDirectory)(BYTE *Path);
LONG (*ChangeDirectory)(BYTE *Path);
LONG (*RenameDirectory)(BYTE *oldPath, BYTE *newPath);
LONG (*MapPathToDirectory)(BYTE *Path);
BYTE *(*MapDirectoryToPath)(LONG Directory);
} IFS;
extern LONG IFSGetDefaultFileSystem(void);
extern LONG IFSOpenFile(BYTE *, LONG);
extern LONG IFSRenameFile(BYTE *, BYTE *);
extern LONG IFSRenameFileHandled(LONG, BYTE *);
extern LONG IFSDeleteFile(BYTE *);
extern LONG IFSDeleteFileHandled(LONG);
extern LONG IFSCreateFile(BYTE *, LONG);
extern LONG IFSCloseFile(LONG);
extern LONG IFSReadFile(LONG, void *, LONG);
extern LONG IFSWriteFile(LONG, void *, LONG);
extern LONG IFSFileSeek(LONG, LONG, LONG);
extern LONG IFSFlushCache(LONG);
extern LONG IFSDirectOpenFile(BYTE *, LONG);
extern LONG IFSDirectRenameFile(BYTE *, BYTE *);
extern LONG IFSDirectRenameFileHandled(LONG, BYTE *);
extern LONG IFSDirectDeleteFile(BYTE *);
extern LONG IFSDirectDeleteFileHandled(LONG);
extern LONG IFSDirectCreateFile(BYTE *, LONG);
extern LONG IFSDirectCloseFile(LONG);
extern LONG IFSDirectReadFile(LONG, void *, LONG);
extern LONG IFSDirectWriteFile(LONG, void *, LONG);
extern LONG IFSDirectFileSeek(LONG, LONG, LONG);
extern LONG IFSFileSize(BYTE *name);
extern LONG IFSFileSizeHandled(LONG fd);
extern LONG IFSFindFirst(BYTE **retBuffer);
extern LONG IFSFindNext(BYTE **retBuffer);
extern LONG IFSFileLock(LONG, LONG, LONG);
extern LONG IFSFileUnlock(LONG);
extern LONG IFSDirectFileLock(LONG, LONG, LONG);
extern LONG IFSDirectFileUnlock(LONG);
extern LONG IFSStartTransaction(LONG);
extern LONG IFSEndTransaction(LONG);
extern LONG IFSAbortTransaction(LONG);
extern LONG IFSCreateDirectory(BYTE *Path);
extern LONG IFSDeleteDirectory(BYTE *Path);
extern LONG IFSChangeDirectory(BYTE *Path);
extern LONG IFSRenameDirectory(BYTE *oldPath, BYTE *newPath);
extern LONG IFSMapPathToDirectory(BYTE *Path);
extern BYTE *IFSMapDirectoryToPath(LONG Directory);
extern LONG VFSOpenFile(LONG fsid, BYTE *name, LONG flags);
extern LONG VFSRenameFile(LONG fsid, BYTE *cName, BYTE *nName);
extern LONG VFSRenameFileHandled(LONG fsid, LONG fd, BYTE *nName);
extern LONG VFSDeleteFile(LONG fsid, BYTE *name);
extern LONG VFSDeleteFileHandled(LONG fsid, LONG fd);
extern LONG VFSCreateFile(LONG fsid, BYTE *name, LONG flags);
extern LONG VFSCloseFile(LONG fsid, LONG fd);
extern LONG VFSReadFile(LONG fsid, LONG fd, void *buf, LONG size);
extern LONG VFSWriteFile(LONG fsid, LONG fd, void *buf, LONG size);
extern LONG VFSFileSeek(LONG fsid, LONG fd, LONG offset, LONG where);
extern LONG VFSFlushCache(LONG fsid, LONG fd);
extern LONG VFSDirectOpenFile(LONG fsid, BYTE *name, LONG flags);
extern LONG VFSDirectRenameFile(LONG fsid, BYTE *cName, BYTE *nName);
extern LONG VFSDirectRenameFileHandled(LONG fsid, LONG fd, BYTE *nName);
extern LONG VFSDirectDeleteFile(LONG fsid, BYTE *name);
extern LONG VFSDirectDeleteFileHandled(LONG fsid, LONG fd);
extern LONG VFSDirectCreateFile(LONG fsid, BYTE *name, LONG flags);
extern LONG VFSDirectCloseFile(LONG fsid, LONG fd);
extern LONG VFSDirectReadFile(LONG fsid, LONG fd, void *buf, LONG size);
extern LONG VFSDirectWriteFile(LONG fsid, LONG fd, void *buf, LONG size);
extern LONG VFSDirectFileSeek(LONG fsid, LONG fd, LONG offset, LONG where);
extern LONG VFSFileSize(LONG fsid, BYTE *name);
extern LONG VFSFileSizeHandled(LONG fsid, LONG fd);
extern LONG VFSFindFirst(LONG fsid, BYTE **retBuffer);
extern LONG VFSFindNext(LONG fsid, BYTE **retBuffer);
extern LONG VFSFileLock(LONG fsid, LONG fd, LONG offset, LONG size);
extern LONG VFSFileUnlock(LONG fsid, LONG lid);
extern LONG VFSDirectFileLock(LONG fsid, LONG fd, LONG offset, LONG size);
extern LONG VFSDirectFileUnlock(LONG fsid, LONG lid);
extern LONG VFSStartTransaction(LONG fsid, LONG fd);
extern LONG VFSEndTransaction(LONG fsid, LONG tid);
extern LONG VFSAbortTransaction(LONG fsid, LONG tid);
extern LONG VFSCreateDirectory(LONG fsid, BYTE *Path);
extern LONG VFSDeleteDirectory(LONG fsid, BYTE *Path);
extern LONG VFSChangeDirectory(LONG fsid, BYTE *Path);
extern LONG VFSRenameDirectory(LONG fsid, BYTE *oldPath, BYTE *newPath);
extern LONG VFSMapPathToDirectory(LONG fsid, BYTE *Path);
extern BYTE *VFSMapDirectoryToPath(LONG fsid, LONG Directory);