1/* 2 * Copyright (c) 2010 - 2012 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24#ifndef _MSFSCC_H_ 25#define _MSFSCC_H_ 26 27 28/* 29 * Reparse Tags 30 * 31 * Each reparse point has a reparse tag. The reparse tag uniquely identifies the 32 * owner of that reparse point. The owner is the implementer of the file system 33 * filter driver associated with a reparse tag. Reparse tags are exposed to clients 34 * for third-party applications. Those applications can set, get, and process 35 * reparse tags as needed. Third parties MUST request a reserved reparse tag 36 * value to ensure that conflicting tag values do not occur. The following reparse 37 * tags, with the exception of IO_REPARSE_TAG_SYMLINK, are processed on the server 38 * and are not processed by a client after transmission over the wire. Clients 39 * should treat associated reparse data as opaque data. 40 * 41 */ 42#define IO_REPARSE_TAG_RESERVED_ZERO 0x00000000 43#define IO_REPARSE_TAG_RESERVED_ONE 0x00000001 44#define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003 45#define IO_REPARSE_TAG_HSM 0xC0000004 46#define IO_REPARSE_TAG_HSM2 0x80000006 47#define IO_REPARSE_TAG_DRIVER_EXTENDER 0x80000005 48#define IO_REPARSE_TAG_SIS 0x80000007 49#define IO_REPARSE_TAG_DFS 0x8000000A 50#define IO_REPARSE_TAG_DFSR 0x80000012 51#define IO_REPARSE_TAG_FILTER_MANAGER 0x8000000B 52#define IO_REPARSE_TAG_SYMLINK 0xA000000C 53 54 55/* 56 * A process invokes an FSCTL on a handle to perform an action against the file 57 * or directory associated with the handle. When a server receives an FSCTL request, 58 * it SHOULD use the information in the request, which includes a handle and, 59 * optionally, an input data buffer, to perform the requested action. How a server 60 * performs the action requested by an FSCTL is implementation dependent. The 61 * following specifies the system-defined generic FSCTLs that are permitted to be 62 * invoked across the network. Generic FSCTLs are used by the local file systems 63 * or by multiple components within the system. Any application, service, or 64 * driver may define private FSCTLs. Most private FSCTLs are used locally in the 65 * internal driver stacks and do not flow over the wire. However, if a component 66 * allows its private FSCTLs to flow over the wire, that component is responsible 67 * for ensuring the FSCTLs and associated data structures are documented. 68 * Examples of such private FSCTLs can be found in [MS-SMB2] and [MS-DFSC]. 69 */ 70#define FSCTL_CREATE_OR_GET_OBJECT_ID 0x900c0 71#define FSCTL_DELETE_OBJECT_ID 0x900a0 72#define FSCTL_DELETE_REPARSE_POINT 0x900ac 73#define FSCTL_FILESYSTEM_GET_STATISTICS 0x90060 74#define FSCTL_FIND_FILES_BY_SID 0x9008f 75#define FSCTL_GET_COMPRESSION 0x9003c 76#define FSCTL_GET_NTFS_VOLUME_DATA 0x90064 77#define FSCTL_GET_OBJECT_ID 0x9009c 78#define FSCTL_GET_REPARSE_POINT 0x900a8 79#define FSCTL_GET_RETRIEVAL_POINTERS 0x90073 80#define FSCTL_IS_PATHNAME_VALID 0x9002c 81#define FSCTL_LMR_SET_LINK_TRACKING_INFORMATION 0x1400ec 82#define FSCTL_PIPE_PEEK 0x11400c 83#define FSCTL_PIPE_TRANSCEIVE 0x11c017 84#define FSCTL_PIPE_WAIT 0x110018 85#define FSCTL_QUERY_FAT_BPB 0x90058 86#define FSCTL_QUERY_ALLOCATED_RANGES 0x940cf 87#define FSCTL_QUERY_ON_DISK_VOLUME_INFO 0x9013c 88#define FSCTL_QUERY_SPARING_INFO 0x90138 89#define FSCTL_READ_FILE_USN_DATA 0x900eb 90#define FSCTL_RECALL_FILE 0x90117 91#define FSCTL_SET_COMPRESSION 0x9c040 92#define FSCTL_SET_DEFECT_MANAGEMENT 0x98134 93#define FSCTL_SET_ENCRYPTION 0x900D7 94#define FSCTL_SET_OBJECT_ID 0x90098 95#define FSCTL_SET_OBJECT_ID_EXTENDED 0x900bc 96#define FSCTL_SET_REPARSE_POINT 0x900a4 97#define FSCTL_SET_SPARSE 0x900c4 98#define FSCTL_SET_ZERO_DATA 0x980c8 99#define FSCTL_SET_ZERO_ON_DEALLOCATION 0x90194 100#define FSCTL_SIS_COPYFILE 0x90100 101#define FSCTL_WRITE_USN_CLOSE_RECORD 0x900ef 102#define FSCTL_DFS_GET_REFERRALS 0x60194 103#define FSCTL_SRV_COPYCHUNK 0x1440F2 104#define FSCTL_SRV_ENUMERATE_SNAPSHOTS 0x144064 105#define FSCTL_SRV_REQUEST_RESUME_KEY 0x140078 106#define FSCTL_SRV_READ_HASH 0x1441bb 107#define FSCTL_SRV_COPYCHUNK_WRITE 0x001480F2 108#define FSCTL_LMR_REQUEST_RESILIENCY 0x001401D4 109#define FSCTL_VALIDATE_NEGOTIATE_INFO 0x00140204 110 111/* 112 * Symbolic Link Reparse Data Buffer 113 * Flags (4 bytes): A 32-bit field that specifies whether the substitute name is 114 * a full path name or a path name relative to the directory containing the 115 * symbolic link. This field contains one of the following values. 116 */ 117#define SYMLINK_FLAG_ABSOLUTE 0x00000000 118#define SYMLINK_FLAG_RELATIVE 0x00000001 119 120#endif // _MSFSCC_H_