| .. | .. |
|---|
| 35 | 35 | * below). Additional detail on less common ones can be found in MS-FSCC |
|---|
| 36 | 36 | * section 2.3. |
|---|
| 37 | 37 | */ |
|---|
| 38 | + |
|---|
| 39 | +/* |
|---|
| 40 | + * FSCTL values are 32 bits and are constructed as |
|---|
| 41 | + * <device 16bits> <access 2bits> <function 12bits> <method 2bits> |
|---|
| 42 | + */ |
|---|
| 43 | +/* Device */ |
|---|
| 44 | +#define FSCTL_DEVICE_DFS (0x0006 << 16) |
|---|
| 45 | +#define FSCTL_DEVICE_FILE_SYSTEM (0x0009 << 16) |
|---|
| 46 | +#define FSCTL_DEVICE_NAMED_PIPE (0x0011 << 16) |
|---|
| 47 | +#define FSCTL_DEVICE_NETWORK_FILE_SYSTEM (0x0014 << 16) |
|---|
| 48 | +#define FSCTL_DEVICE_MASK 0xffff0000 |
|---|
| 49 | +/* Access */ |
|---|
| 50 | +#define FSCTL_DEVICE_ACCESS_FILE_ANY_ACCESS (0x00 << 14) |
|---|
| 51 | +#define FSCTL_DEVICE_ACCESS_FILE_READ_ACCESS (0x01 << 14) |
|---|
| 52 | +#define FSCTL_DEVICE_ACCESS_FILE_WRITE_ACCESS (0x02 << 14) |
|---|
| 53 | +#define FSCTL_DEVICE_ACCESS_FILE_READ_WRITE_ACCESS (0x03 << 14) |
|---|
| 54 | +#define FSCTL_DEVICE_ACCESS_MASK 0x0000c000 |
|---|
| 55 | +/* Function */ |
|---|
| 56 | +#define FSCTL_DEVICE_FUNCTION_MASK 0x00003ffc |
|---|
| 57 | +/* Method */ |
|---|
| 58 | +#define FSCTL_DEVICE_METHOD_BUFFERED 0x00 |
|---|
| 59 | +#define FSCTL_DEVICE_METHOD_IN_DIRECT 0x01 |
|---|
| 60 | +#define FSCTL_DEVICE_METHOD_OUT_DIRECT 0x02 |
|---|
| 61 | +#define FSCTL_DEVICE_METHOD_NEITHER 0x03 |
|---|
| 62 | +#define FSCTL_DEVICE_METHOD_MASK 0x00000003 |
|---|
| 63 | + |
|---|
| 64 | + |
|---|
| 38 | 65 | #define FSCTL_DFS_GET_REFERRALS 0x00060194 |
|---|
| 39 | 66 | #define FSCTL_DFS_GET_REFERRALS_EX 0x000601B0 |
|---|
| 40 | 67 | #define FSCTL_REQUEST_OPLOCK_LEVEL_1 0x00090000 |
|---|
| .. | .. |
|---|
| 76 | 103 | #define FSCTL_SET_ZERO_ON_DEALLOC 0x00090194 /* BB add struct */ |
|---|
| 77 | 104 | #define FSCTL_SET_SHORT_NAME_BEHAVIOR 0x000901B4 /* BB add struct */ |
|---|
| 78 | 105 | #define FSCTL_GET_INTEGRITY_INFORMATION 0x0009027C |
|---|
| 79 | | -#define FSCTL_QUERY_ALLOCATED_RANGES 0x000940CF /* BB add struct */ |
|---|
| 106 | +#define FSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT 0x000903d3 |
|---|
| 107 | +#define FSCTL_GET_RETRIEVAL_POINTER_COUNT 0x0009042b |
|---|
| 108 | +#define FSCTL_QUERY_ALLOCATED_RANGES 0x000940CF |
|---|
| 80 | 109 | #define FSCTL_SET_DEFECT_MANAGEMENT 0x00098134 /* BB add struct */ |
|---|
| 81 | 110 | #define FSCTL_FILE_LEVEL_TRIM 0x00098208 /* BB add struct */ |
|---|
| 82 | 111 | #define FSCTL_DUPLICATE_EXTENTS_TO_FILE 0x00098344 |
|---|
| .. | .. |
|---|
| 117 | 146 | #define IO_REPARSE_APPXSTREAM 0xC0000014 |
|---|
| 118 | 147 | /* NFS symlinks, Win 8/SMB3 and later */ |
|---|
| 119 | 148 | #define IO_REPARSE_TAG_NFS 0x80000014 |
|---|
| 149 | +/* |
|---|
| 150 | + * AzureFileSync - see |
|---|
| 151 | + * https://docs.microsoft.com/en-us/azure/storage/files/storage-sync-cloud-tiering |
|---|
| 152 | + */ |
|---|
| 153 | +#define IO_REPARSE_TAG_AZ_FILE_SYNC 0x8000001e |
|---|
| 154 | +/* WSL reparse tags */ |
|---|
| 155 | +#define IO_REPARSE_TAG_LX_SYMLINK 0xA000001D |
|---|
| 156 | +#define IO_REPARSE_TAG_AF_UNIX 0x80000023 |
|---|
| 157 | +#define IO_REPARSE_TAG_LX_FIFO 0x80000024 |
|---|
| 158 | +#define IO_REPARSE_TAG_LX_CHR 0x80000025 |
|---|
| 159 | +#define IO_REPARSE_TAG_LX_BLK 0x80000026 |
|---|
| 120 | 160 | |
|---|
| 121 | 161 | /* fsctl flags */ |
|---|
| 122 | 162 | /* If Flags is set to this value, the request is an FSCTL not ioctl request */ |
|---|