diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public/sdk/inc/ntdddfs.h | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to '')
-rw-r--r-- | public/sdk/inc/ntdddfs.h | 291 |
1 files changed, 291 insertions, 0 deletions
diff --git a/public/sdk/inc/ntdddfs.h b/public/sdk/inc/ntdddfs.h new file mode 100644 index 000000000..bd4de472e --- /dev/null +++ b/public/sdk/inc/ntdddfs.h @@ -0,0 +1,291 @@ +/*++ BUILD Version: 0001 // Increment this if a change has global effects + +Copyright (c) 1992 Microsoft Corporation + +Module Name: + + ntdddfs.h + +Abstract: + + This is the include file that defines all constants and types for + accessing the Distributed file service device. + +Author: + + Alan Whitney (alanw) 27 May 1992 + +Revision History: + +--*/ + + +#ifndef _NTDDDFS_ +#define _NTDDDFS_ + +// +// The names of logical roots are restricted to be less than or equal to +// MAX_LOGICAL_ROOT_NAME chars. +// + +#define MAX_LOGICAL_ROOT_NAME 8 + +// +// Device Name - this string is the name of the device. It is the name +// that should be passed to NtOpenFile when accessing the device. +// + +extern LPCWSTR DD_DFS_DEVICE_DIR; +extern LPCWSTR DD_DFS_DLORG_DEVICE_NAME; // Device for downlevel access +extern LPCWSTR DD_DFS_ORG_DEVICE_NAME; // Device pointing to root of dfs + +// +// NtDeviceIoControlFile IoControlCode values for this device. +// +// Warning: Remember that the low two bits of the code specify how the +// buffers are passed to the driver! +// + +#define IOCTL_DFS_BASE FILE_DEVICE_DFS + + +// BUGBUG - borrow a currently unused bit in CreateOptions to indicate +// that the file server is calling into DNR. + +#define FILE_OPEN_LOCAL_SCOPE FILE_OPEN_BY_FILE_ID //BUGBUG - need a real bit defn. + + +#define STATUS_CHILD_VOLUME STATUS_DFS_EXIT_PATH_FOUND // vol. is child of local volume + + +// BUGBUG - The following need to be in devioctl.h +#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000030 +#define FILE_DEVICE_DFS_VOLUME 0x00000031 + +// BUGBUG - End TEMP declarations + +// +// Distributed file service file control code and structure declarations +// + +// +// External Distributed file service file control operations +// + +#define FSCTL_DFS_DEFINE_LOGICAL_ROOT CTL_CODE(IOCTL_DFS_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_DELETE_LOGICAL_ROOT CTL_CODE(IOCTL_DFS_BASE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_LOGICAL_ROOT_PREFIX CTL_CODE(IOCTL_DFS_BASE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_GET_DSMACHINE CTL_CODE(IOCTL_DFS_BASE, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_GET_HANDLE_IDS CTL_CODE(IOCTL_DFS_BASE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_DEFINE_PROVIDER CTL_CODE(IOCTL_DFS_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_GET_REFERRAL CTL_CODE(IOCTL_DFS_BASE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_INIT_LOCAL_PARTITIONS CTL_CODE(IOCTL_DFS_BASE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_CREATE_LOCAL_PARTITION CTL_CODE(IOCTL_DFS_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_DELETE_LOCAL_PARTITION CTL_CODE(IOCTL_DFS_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_SET_LOCAL_VOLUME_STATE CTL_CODE(IOCTL_DFS_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_SET_SERVICE_STATE CTL_CODE(IOCTL_DFS_BASE, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_DC_SET_VOLUME_STATE CTL_CODE(IOCTL_DFS_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) + +//#define FSCTL_DFS_unused CTL_CODE(IOCTL_DFS_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS) +//#define FSCTL_DFS_unused CTL_CODE(IOCTL_DFS_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_IS_CHILDNAME_LEGAL CTL_CODE(IOCTL_DFS_BASE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_PKT_CREATE_ENTRY CTL_CODE(IOCTL_DFS_BASE, 16, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_PKT_CREATE_SUBORDINATE_ENTRY CTL_CODE(IOCTL_DFS_BASE, 17, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_CHECK_STGID_IN_USE CTL_CODE(IOCTL_DFS_BASE, 18, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_UPDATE_MACHINE_ADDRESS CTL_CODE(IOCTL_DFS_BASE, 19, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_SET_DOMAIN_GLUON CTL_CODE(IOCTL_DFS_BASE, 20, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_UPDATE_SITE_COSTS CTL_CODE(IOCTL_DFS_BASE, 21, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_PKT_SET_RELATION_INFO CTL_CODE(IOCTL_DFS_BASE, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_SERVER_INFO CTL_CODE(IOCTL_DFS_BASE, 23, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_SET_SERVER_INFO CTL_CODE(IOCTL_DFS_BASE, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_NAME_RESOLVE CTL_CODE(IOCTL_DFS_BASE, 25, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_PKT_DESTROY_ENTRY CTL_CODE(IOCTL_DFS_BASE, 26, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_PKT_GET_RELATION_INFO CTL_CODE(IOCTL_DFS_BASE, 27, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_LOCAL_NAME_RESOLVE CTL_CODE(IOCTL_DFS_BASE, 28, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_CREATE_EXIT_POINT CTL_CODE(IOCTL_DFS_BASE, 29, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_DELETE_EXIT_POINT CTL_CODE(IOCTL_DFS_BASE, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_ALL_ENTRIES CTL_CODE(IOCTL_DFS_BASE, 31, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_CAIRO_SERVER CTL_CODE(IOCTL_DFS_BASE, 32, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_CHILDREN CTL_CODE(IOCTL_DFS_BASE, 33, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_CHECK_REMOTE_PARTITION CTL_CODE(IOCTL_DFS_BASE, 34, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_VERIFY_REMOTE_VOLUME_KNOWLEDGE CTL_CODE(IOCTL_DFS_BASE, 35, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_VERIFY_LOCAL_VOLUME_KNOWLEDGE CTL_CODE(IOCTL_DFS_BASE, 36, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_KNOWLEDGE_SYNC_PARAMETERS CTL_CODE(IOCTL_DFS_BASE, 37, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_MODIFY_PREFIX CTL_CODE(IOCTL_DFS_BASE, 38, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_FIX_LOCAL_VOLUME CTL_CODE(IOCTL_DFS_BASE, 39, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_DRIVE_INFO CTL_CODE(IOCTL_DFS_BASE, 40, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_DRIVE_FOR_PATH CTL_CODE(IOCTL_DFS_BASE, 41, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_PATH_TO_INFO CTL_CODE(IOCTL_DFS_BASE, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_INIT_MACH_SHARES CTL_CODE(IOCTL_DFS_BASE, 43, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_PKT_ENTRY_MODIFY_GUID CTL_CODE(IOCTL_DFS_BASE, 44, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_PKT_UPDATE_DOMAIN_KNOWLEDGE CTL_CODE(IOCTL_DFS_BASE, 45, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_LINK_DRIVE CTL_CODE(IOCTL_DFS_BASE, 46, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_CONNECTED_RESOURCES CTL_CODE(IOCTL_DFS_BASE, 47, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_SERVER_NAME CTL_CODE(IOCTL_DFS_BASE, 48, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_PATH_FROM_PREFIX CTL_CODE(IOCTL_DFS_BASE, 49, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_READ_METERS CTL_CODE(IOCTL_DFS_BASE, 50, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_SHUFFLE_ENTRY CTL_CODE(IOCTL_DFS_BASE, 51, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_FIRST_SVC CTL_CODE(IOCTL_DFS_BASE, 52, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_NEXT_SVC CTL_CODE(IOCTL_DFS_BASE, 53, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFS_GET_ENTRY_TYPE CTL_CODE(IOCTL_DFS_BASE, 54, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_DFS_GET_HANDLE_SERVER_INFO CTL_CODE(IOCTL_DFS_BASE, 55, METHOD_BUFFERED, FILE_ANY_ACCESS) + +// +// Ea buffer name to open JPs +// + +#define EA_NAME_OPENIFJP ".OpenIfJP" + +// +// NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for +// this device. +// + +#ifndef GUID_DEFINED // BUGBUG - Should come +#define GUID_DEFINED // from someplace more +typedef struct _GUID { // global than ntdddfs.h + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID; +#endif // GUID_DEFINED + + +//[ dfs_object_guids +// +// The following structure describes the guids that identify an object +// anywhere on the network. This is returned by FSCTL_DFS_GET_HANDLE_IDS. +// + +typedef struct _DFS_OBJECT_GUIDS { + GUID guidDomain; + GUID guidVolume; + GUID guidObject; + ULONG ulUniquifier; +} DFS_OBJECT_GUIDS, *PDFS_OBJECT_GUIDS; + +//[ dfs_site_cost +// +// The following structure describes a site cost. +// + +typedef struct _DFS_SITE_COST { + GUID guidSite; + unsigned long dwCost; +} DFS_SITE_COST, *PDFS_SITE_COST; + +//[ dfs_referral +// +// The following structures describe a set of referrals. +// + +typedef enum _DFS_REF_TYPE { + MasterReplica = 1, + ReadOnlyReplica = 2, + KnowledgeSource = 3, + LocalReplica = 4, +} DFS_REF_TYPE; + + +// Standardized provider IDs as given in eProviderId + +#define PROV_ID_LOCAL_FS 0x101 // generic local file system +#define PROV_ID_DFS_RDR 0x201 // The standard Cairo redirector +#define PROV_ID_LM_RDR 0x202 // The usual LanMan (downlevel) redir + + +// Provider capabilities as given in fRefCapability and fProvCapability +#define PROV_OFS_API 1 // accepts OFS extension APIs +#define PROV_DFS_RDR 2 // accepts NtCreateFile with EA Principal +#define PROV_STRIP_PREFIX 4 // strip file name prefix before redispatching +#define PROV_UNAVAILABLE 8 // provider unavailable - try to reattach. + + +typedef struct _DFS_REFERRAL { + ULONG cbRefSize; // total size of referral struct + USHORT eProviderId; // ID of provider + USHORT fRefCapability; // Capabilities of provider + DFS_REF_TYPE eRefType; // type of referral + ULONG cbAddrSize; // size in bytes of address part + ULONG cwPrincipal; // size of principal name + ULONG cbMachine; // size of Machine Buf below. + UCHAR bAddr[1]; // server and resource name/address + WCHAR Principal[1]; // server principal name if cwPrincipal != 0 + UCHAR MachineBuf[1]; // Machine struct is marshalled into this. +} DFS_REFERRAL; + +typedef struct _DFS_REF_LIST { + ULONG cReferrals; // num of referral structs which follow + DFS_REFERRAL sReferrals[1]; // one or more referral structures +} DFS_REF_LIST; +//] + + +//[ dsfs_fsctlstructs +// Control structure for FSCTL_DFS_DEFINE_LOGICAL_ROOT + +typedef struct _FILE_DFS_DEF_LOGICAL_ROOT_BUFFER { + BOOLEAN fForce; + WCHAR LogicalRoot[MAX_LOGICAL_ROOT_NAME]; + WCHAR RootPrefix[1]; +} FILE_DFS_DEF_ROOT_BUFFER, *PFILE_DFS_DEF_ROOT_BUFFER; + + +// Control structure for FSCTL_DFS_NAME_RESOLVE + +#define DFS_NAME_RES_TYPE_REFERRAL 0 +#define DFS_NAME_RES_TYPE_LOCAL 1 + +typedef struct _FILE_DFS_NAME_RESOLVE_BUFFER { + ULONG ServiceTypes; + ULONG ReferralType; // 1 means return entry that + WCHAR PrefixName[1]; // matches Prefix, 0 means + // return referral for Prefix +} FILE_DFS_NAME_RESOLVE_BUFFER, *PFILE_DFS_NAME_RESOLVE_BUFFER; + + +// Control structure for FSCTL_DFS_UPD_REFERRAL + +typedef struct _FILE_DFS_UPD_REFERRAL_BUFFER { + ULONG ReferralOffset; // Offset in buffer of referral data + GUID PrefixID; // partition ID + ULONG ReferralEntryType; + WCHAR PrefixName[1]; + DFS_REF_LIST ReferralData; +} FILE_DFS_UPD_REFERRAL_BUFFER, *PFILE_DFS_UPD_REFERRAL_BUFFER; + + + + +// Control structure for FSCTL_DFS_DEFINE_PROVIDER + +typedef struct _FILE_DFS_DEF_PROVIDER { + USHORT eProviderId; // ID of provider + USHORT fProvCapability; // Capabilities of provider + WCHAR ProviderName[1]; +} FILE_DFS_DEF_PROVIDER, *PFILE_DFS_DEF_PROVIDER; + + +// Control structure for FSCTL_DFS_GET_DRIVE_FOR_PATH + +typedef struct _FILE_DFS_GET_DRIVE { + WCHAR wcDrive; + ULONG cbMatchLength; +} FILE_DFS_GET_DRIVE, *PFILE_DFS_GET_DRIVE; + +//] +#endif // _NTDDDFS_ |