Reactos
at listview 280 lines 10 kB view raw
1/* NFSv4.1 client for Windows 2 * Copyright � 2012 The Regents of the University of Michigan 3 * 4 * Olga Kornievskaia <aglo@umich.edu> 5 * Casey Bodley <cbodley@umich.edu> 6 * 7 * This library is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU Lesser General Public License as published by 9 * the Free Software Foundation; either version 2.1 of the License, or (at 10 * your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, but 13 * without any warranty; without even the implied warranty of merchantability 14 * or fitness for a particular purpose. See the GNU Lesser General Public 15 * License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public License 18 * along with this library; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 */ 21 22#ifndef _NFS41_DAEMON_ 23#define _NFS41_DAEMON_ 24 25#define FILE_DIRECTORY_FILE 0x00000001 26#define FILE_WRITE_THROUGH 0x00000002 27#define FILE_SEQUENTIAL_ONLY 0x00000004 28#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 29 30#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 31#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 32#define FILE_NON_DIRECTORY_FILE 0x00000040 33#define FILE_CREATE_TREE_CONNECTION 0x00000080 34 35#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 36#define FILE_NO_EA_KNOWLEDGE 0x00000200 37#define FILE_OPEN_REMOTE_INSTANCE 0x00000400 38#define FILE_RANDOM_ACCESS 0x00000800 39 40#define FILE_DELETE_ON_CLOSE 0x00001000 41#define FILE_OPEN_BY_FILE_ID 0x00002000 42#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 43#define FILE_NO_COMPRESSION 0x00008000 44 45#define FILE_RESERVE_OPFILTER 0x00100000 46#define FILE_OPEN_REPARSE_POINT 0x00200000 47#define FILE_OPEN_NO_RECALL 0x00400000 48#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 49 50#define FILE_COPY_STRUCTURED_STORAGE 0x00000041 51#define FILE_STRUCTURED_STORAGE 0x00000441 52 53#define FILE_SUPERSEDE 0x00000000 54#define FILE_OPEN 0x00000001 55#define FILE_CREATE 0x00000002 56#define FILE_OPEN_IF 0x00000003 57#define FILE_OVERWRITE 0x00000004 58#define FILE_OVERWRITE_IF 0x00000005 59#define FILE_MAXIMUM_DISPOSITION 0x00000005 60 61typedef enum _FILE_INFORMATION_CLASS { 62 FileDirectoryInformation = 1, 63 FileFullDirectoryInformation, // 2 64 FileBothDirectoryInformation, // 3 65 FileBasicInformation, // 4 66 FileStandardInformation, // 5 67 FileInternalInformation, // 6 68 FileEaInformation, // 7 69 FileAccessInformation, // 8 70 FileNameInformation, // 9 71 FileRenameInformation, // 10 72 FileLinkInformation, // 11 73 FileNamesInformation, // 12 74 FileDispositionInformation, // 13 75 FilePositionInformation, // 14 76 FileFullEaInformation, // 15 77 FileModeInformation, // 16 78 FileAlignmentInformation, // 17 79 FileAllInformation, // 18 80 FileAllocationInformation, // 19 81 FileEndOfFileInformation, // 20 82 FileAlternateNameInformation, // 21 83 FileStreamInformation, // 22 84 FilePipeInformation, // 23 85 FilePipeLocalInformation, // 24 86 FilePipeRemoteInformation, // 25 87 FileMailslotQueryInformation, // 26 88 FileMailslotSetInformation, // 27 89 FileCompressionInformation, // 28 90 FileObjectIdInformation, // 29 91 FileCompletionInformation, // 30 92 FileMoveClusterInformation, // 31 93 FileQuotaInformation, // 32 94 FileReparsePointInformation, // 33 95 FileNetworkOpenInformation, // 34 96 FileAttributeTagInformation, // 35 97 FileTrackingInformation, // 36 98 FileIdBothDirectoryInformation, // 37 99 FileIdFullDirectoryInformation, // 38 100 FileValidDataLengthInformation, // 39 101 FileShortNameInformation, // 40 102 FileIoCompletionNotificationInformation, // 41 103 FileIoStatusBlockRangeInformation, // 42 104 FileIoPriorityHintInformation, // 43 105 FileSfioReserveInformation, // 44 106 FileSfioVolumeInformation, // 45 107 FileHardLinkInformation, // 46 108 FileProcessIdsUsingFileInformation, // 47 109 FileNormalizedNameInformation, // 48 110 FileNetworkPhysicalNameInformation, // 49 111 FileIdGlobalTxDirectoryInformation, // 50 112 FileMaximumInformation 113} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; 114 115 116/* kernel structures for QueryDirectory results */ 117typedef struct _FILE_NAMES_INFORMATION { 118 ULONG NextEntryOffset; 119 ULONG FileIndex; 120 ULONG FileNameLength; 121 WCHAR FileName[1]; 122} FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION; 123 124typedef struct _FILE_DIRECTORY_INFO { 125 ULONG NextEntryOffset; 126 ULONG FileIndex; 127 LARGE_INTEGER CreationTime; 128 LARGE_INTEGER LastAccessTime; 129 LARGE_INTEGER LastWriteTime; 130 LARGE_INTEGER ChangeTime; 131 LARGE_INTEGER EndOfFile; 132 LARGE_INTEGER AllocationSize; 133 ULONG FileAttributes; 134 ULONG FileNameLength; 135 WCHAR FileName[1]; 136} FILE_DIRECTORY_INFO, *PFILE_DIRECTORY_INFO; 137 138typedef struct _FILE_BOTH_DIR_INFORMATION { 139 ULONG NextEntryOffset; 140 ULONG FileIndex; 141 LARGE_INTEGER CreationTime; 142 LARGE_INTEGER LastAccessTime; 143 LARGE_INTEGER LastWriteTime; 144 LARGE_INTEGER ChangeTime; 145 LARGE_INTEGER EndOfFile; 146 LARGE_INTEGER AllocationSize; 147 ULONG FileAttributes; 148 ULONG FileNameLength; 149 ULONG EaSize; 150 CCHAR ShortNameLength; 151 WCHAR ShortName[12]; 152 WCHAR FileName[1]; 153} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION; 154 155typedef struct _FILE_FULL_DIR_INFO { 156 ULONG NextEntryOffset; 157 ULONG FileIndex; 158 LARGE_INTEGER CreationTime; 159 LARGE_INTEGER LastAccessTime; 160 LARGE_INTEGER LastWriteTime; 161 LARGE_INTEGER ChangeTime; 162 LARGE_INTEGER EndOfFile; 163 LARGE_INTEGER AllocationSize; 164 ULONG FileAttributes; 165 ULONG FileNameLength; 166 ULONG EaSize; 167 WCHAR FileName[1]; 168} FILE_FULL_DIR_INFO, *PFILE_FULL_DIR_INFO; 169 170typedef struct _FILE_ID_FULL_DIR_INFO { 171 ULONG NextEntryOffset; 172 ULONG FileIndex; 173 LARGE_INTEGER CreationTime; 174 LARGE_INTEGER LastAccessTime; 175 LARGE_INTEGER LastWriteTime; 176 LARGE_INTEGER ChangeTime; 177 LARGE_INTEGER EndOfFile; 178 LARGE_INTEGER AllocationSize; 179 ULONG FileAttributes; 180 ULONG FileNameLength; 181 ULONG EaSize; 182 LARGE_INTEGER FileId; 183 WCHAR FileName[1]; 184} FILE_ID_FULL_DIR_INFO, *PFILE_ID_FULL_DIR_INFO; 185 186typedef struct _FILE_LINK_INFORMATION { 187 BOOLEAN ReplaceIfExists; 188 HANDLE RootDirectory; 189 ULONG FileNameLength; 190 WCHAR FileName[1]; 191} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION; 192 193typedef struct _FILE_FULL_EA_INFORMATION { 194 ULONG NextEntryOffset; 195 UCHAR Flags; 196 UCHAR EaNameLength; 197 USHORT EaValueLength; 198 CHAR EaName[1]; 199} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION; 200 201typedef struct _FILE_GET_EA_INFORMATION { 202 ULONG NextEntryOffset; 203 UCHAR EaNameLength; 204 CHAR EaName[1]; 205} FILE_GET_EA_INFORMATION, *PFILE_GET_EA_INFORMATION; 206 207typedef struct _FILE_NETWORK_OPEN_INFORMATION { 208 LARGE_INTEGER CreationTime; 209 LARGE_INTEGER LastAccessTime; 210 LARGE_INTEGER LastWriteTime; 211 LARGE_INTEGER ChangeTime; 212 LARGE_INTEGER AllocationSize; 213 LARGE_INTEGER EndOfFile; 214 ULONG FileAttributes; 215} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; 216 217/* wdm.h */ 218typedef enum _FSINFOCLASS { 219 FileFsVolumeInformation = 1, 220 FileFsLabelInformation, // 2 221 FileFsSizeInformation, // 3 222 FileFsDeviceInformation, // 4 223 FileFsAttributeInformation, // 5 224 FileFsControlInformation, // 6 225 FileFsFullSizeInformation, // 7 226 FileFsObjectIdInformation, // 8 227 FileFsDriverPathInformation, // 9 228 FileFsVolumeFlagsInformation,// 10 229 FileFsMaximumInformation 230} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; 231 232/* ntifs.h */ 233#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 234#define FILE_CASE_PRESERVED_NAMES 0x00000002 235#define FILE_UNICODE_ON_DISK 0x00000004 236#define FILE_PERSISTENT_ACLS 0x00000008 237#define FILE_FILE_COMPRESSION 0x00000010 238#define FILE_VOLUME_QUOTAS 0x00000020 239#define FILE_SUPPORTS_SPARSE_FILES 0x00000040 240#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 241#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 242#define FILE_VOLUME_IS_COMPRESSED 0x00008000 243#define FILE_SUPPORTS_OBJECT_IDS 0x00010000 244#define FILE_SUPPORTS_ENCRYPTION 0x00020000 245#define FILE_NAMED_STREAMS 0x00040000 246#define FILE_READ_ONLY_VOLUME 0x00080000 247#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 248#define FILE_SUPPORTS_TRANSACTIONS 0x00200000 249#define FILE_SUPPORTS_HARD_LINKS 0x00400000 250#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 251#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 252#define FILE_SUPPORTS_USN_JOURNAL 0x02000000 253 254typedef struct _FILE_FS_ATTRIBUTE_INFORMATION { 255 ULONG FileSystemAttributes; 256 LONG MaximumComponentNameLength; 257 ULONG FileSystemNameLength; 258 WCHAR FileSystemName[1]; 259} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION; 260 261/* ntddk.h */ 262typedef struct _FILE_FS_SIZE_INFORMATION { 263 LARGE_INTEGER TotalAllocationUnits; 264 LARGE_INTEGER AvailableAllocationUnits; 265 ULONG SectorsPerAllocationUnit; 266 ULONG BytesPerSector; 267} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION; 268 269typedef struct _FILE_FS_FULL_SIZE_INFORMATION { 270 LARGE_INTEGER TotalAllocationUnits; 271 LARGE_INTEGER CallerAvailableAllocationUnits; 272 LARGE_INTEGER ActualAvailableAllocationUnits; 273 ULONG SectorsPerAllocationUnit; 274 ULONG BytesPerSector; 275} FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION; 276 277typedef struct _FILE_INTERNAL_INFORMATION { 278 LARGE_INTEGER IndexNumber; 279} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION; 280#endif