eed866d849de611f5d0dee29d2925542b4230848
[reactos.git] / include / ntos / file.h
1 /*
2  * COPYRIGHT:    See COPYING in the top level directory
3  * PROJECT:      ReactOS kernel
4  * FILE:         include/ps.h
5  * PURPOSE:      Filesystem declarations used by all the parts of the 
6  *               system
7  * PROGRAMMER:   David Welch <welch@cwcom.net>
8  * UPDATE HISTORY: 
9  *               27/06/00: Created
10  */
11
12
13 #ifndef __INCLUDE_FILE_H
14 #define __INCLUDE_FILE_H
15
16 #define GENERIC_READ    (0x80000000L)
17 #define GENERIC_WRITE   (0x40000000L)
18 #define FILE_READ_DATA            ( 0x0001 )    /* file & pipe */
19 #define FILE_LIST_DIRECTORY       ( 0x0001 )    /* directory */
20
21 #define FILE_WRITE_DATA           ( 0x0002 )    /* file & pipe */
22 #define FILE_ADD_FILE             ( 0x0002 )    /* directory */
23
24 #define FILE_APPEND_DATA          ( 0x0004 )    /* file */
25 #define FILE_ADD_SUBDIRECTORY     ( 0x0004 )    /* directory */
26 #define FILE_CREATE_PIPE_INSTANCE ( 0x0004 )    /* named pipe */
27
28 #define FILE_READ_EA              ( 0x0008 )    /* file & directory */
29 #define FILE_READ_PROPERTIES      FILE_READ_EA
30
31 #define FILE_WRITE_EA             ( 0x0010 )    /* file & directory */
32 #define FILE_WRITE_PROPERTIES     FILE_WRITE_EA
33
34 #define FILE_EXECUTE              ( 0x0020 )    /* file */
35 #define FILE_TRAVERSE             ( 0x0020 )    /* directory */
36
37 #define FILE_DELETE_CHILD         ( 0x0040 )    /* directory */
38
39 #define FILE_READ_ATTRIBUTES      ( 0x0080 )    /* all */
40
41 #define FILE_WRITE_ATTRIBUTES     ( 0x0100 )    /* all */
42
43 #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
44
45 #define FILE_GENERIC_READ         (STANDARD_RIGHTS_READ     |\
46                                    FILE_READ_DATA           |\
47                                    FILE_READ_ATTRIBUTES     |\
48                                    FILE_READ_EA             |\
49                                    SYNCHRONIZE)
50
51
52 #define FILE_GENERIC_WRITE        (STANDARD_RIGHTS_WRITE    |\
53                                    FILE_WRITE_DATA          |\
54                                    FILE_WRITE_ATTRIBUTES    |\
55                                    FILE_WRITE_EA            |\
56                                    FILE_APPEND_DATA         |\
57                                    SYNCHRONIZE)
58
59
60 #define FILE_GENERIC_EXECUTE      (STANDARD_RIGHTS_EXECUTE  |\
61                                    FILE_READ_ATTRIBUTES     |\
62                                    FILE_EXECUTE             |\
63                                    SYNCHRONIZE)
64
65 #define FILE_SHARE_DELETE       (4)
66 #define FILE_SHARE_READ (1)
67 #define FILE_SHARE_WRITE        (2)
68 #define CONSOLE_TEXTMODE_BUFFER (1)
69 #define CREATE_NEW      (1)
70 #define CREATE_ALWAYS   (2)
71 #define OPEN_EXISTING   (3)
72 #define OPEN_ALWAYS     (4)
73 #define TRUNCATE_EXISTING       (5)
74 #define FILE_ATTRIBUTE_ARCHIVE  (32)
75 #define FILE_ATTRIBUTE_COMPRESSED       (2048)
76 #define FILE_ATTRIBUTE_DEVICE   (64)
77 #define FILE_ATTRIBUTE_NORMAL   (128)
78 #define FILE_ATTRIBUTE_DIRECTORY        (16)
79 #define FILE_ATTRIBUTE_ENCRYPTED (16384)
80 #define FILE_ATTRIBUTE_HIDDEN   (2)
81 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED (8192)
82 #define FILE_ATTRIBUTE_OFFLINE  (4096)
83 #define FILE_ATTRIBUTE_READONLY (1)
84 #define FILE_ATTRIBUTE_REPARSE_POINT (1024)
85 #define FILE_ATTRIBUTE_SPARSE_FILE (512)
86 #define FILE_ATTRIBUTE_SYSTEM   (4)
87 #define FILE_ATTRIBUTE_TEMPORARY        (256)
88 #define FILE_ATTRIBUTE_VALID_FLAGS      (0x00007fb7)
89 #define FILE_ATTRIBUTE_VALID_SET_FLAGS  (0x000031a7)
90 #define FILE_FLAG_WRITE_THROUGH         (0x80000000)
91 #define FILE_FLAG_OVERLAPPED            (0x40000000)
92 #define FILE_FLAG_NO_BUFFERING          (0x20000000)
93 #define FILE_FLAG_RANDOM_ACCESS         (0x10000000)
94 #define FILE_FLAG_SEQUENTIAL_SCAN       (0x08000000)
95 #define FILE_FLAG_DELETE_ON_CLOSE       (0x04000000)
96 #define FILE_FLAG_BACKUP_SEMANTICS      (0x02000000)
97 #define FILE_FLAG_POSIX_SEMANTICS       (0x01000000)
98
99 /* GetVolumeInformation */
100 #define FS_CASE_IS_PRESERVED    (2)
101 #define FS_CASE_SENSITIVE       (1)
102 #define FS_UNICODE_STORED_ON_DISK       (4)
103 #define FS_PERSISTENT_ACLS      (8)
104 #define FS_FILE_COMPRESSION     (16)
105 #define FS_VOL_IS_COMPRESSED    (32768)
106
107 /* NtQueryVolumeInformationFile */
108 #define FILE_CASE_SENSITIVE_SEARCH      (0x00000001)
109 #define FILE_CASE_PRESERVED_NAMES       (0x00000002)
110 #define FILE_UNICODE_ON_DISK            (0x00000004)
111 #define FILE_PERSISTENT_ACLS            (0x00000008)
112 #define FILE_FILE_COMPRESSION           (0x00000010)
113 #define FILE_VOLUME_IS_COMPRESSED       (0x00008000)
114
115
116 #endif /* __INCLUDE_FILE_H */