395 lines
9.3 KiB
Text
395 lines
9.3 KiB
Text
/*
|
|
dfs interface definition
|
|
*/
|
|
|
|
[ uuid("4fc742e0-4a10-11cf-8273-00aa004ae673"),
|
|
version(3.0),
|
|
pointer_default(unique),
|
|
helpstring("Settings for Microsoft Distributed File System")
|
|
] interface netdfs
|
|
{
|
|
/******************/
|
|
/* Function: 0x00 */
|
|
typedef [v1_enum] enum {
|
|
DFS_MANAGER_VERSION_NT4 = 1,
|
|
DFS_MANAGER_VERSION_W2K = 2,
|
|
DFS_MANAGER_VERSION_W2K3 = 4
|
|
} dfs_ManagerVersion;
|
|
|
|
void dfs_GetManagerVersion(
|
|
[out] dfs_ManagerVersion *version
|
|
);
|
|
|
|
|
|
/******************/
|
|
/* Function: 0x01 */
|
|
WERROR dfs_Add (
|
|
[in] [string,charset(UTF16)] uint16 *path,
|
|
[in] [string,charset(UTF16)] uint16 *server,
|
|
[in,unique] [string,charset(UTF16)] uint16 *share,
|
|
[in,unique] [string,charset(UTF16)] uint16 *comment,
|
|
[in] uint32 flags
|
|
);
|
|
|
|
/******************/
|
|
/* Function: 0x02 */
|
|
WERROR dfs_Remove (
|
|
[in] [string,charset(UTF16)] uint16 *dfs_entry_path,
|
|
[in,unique] [string,charset(UTF16)] uint16 *servername,
|
|
[in,unique] [string,charset(UTF16)] uint16 *sharename
|
|
);
|
|
|
|
/******************/
|
|
/* Function: 0x03 */
|
|
|
|
typedef struct {
|
|
} dfs_Info0;
|
|
|
|
typedef struct {
|
|
[string,charset(UTF16)] uint16 *path;
|
|
} dfs_Info1;
|
|
|
|
/* first 4 bits unverified yet */
|
|
typedef [public,bitmap32bit] bitmap {
|
|
DFS_VOLUME_STATE_OK = 0x1,
|
|
DFS_VOLUME_STATE_INCONSISTENT = 0x2,
|
|
DFS_VOLUME_STATE_OFFLINE = 0x4,
|
|
DFS_VOLUME_STATE_ONLINE = 0x8,
|
|
DFS_VOLUME_STATE_STANDALONE = DFS_VOLUME_FLAVOR_STANDALONE,
|
|
DFS_VOLUME_STATE_AD_BLOB = DFS_VOLUME_FLAVOR_AD_BLOB
|
|
} dfs_VolumeState;
|
|
|
|
typedef struct {
|
|
[string,charset(UTF16)] uint16 *path;
|
|
[string,charset(UTF16)] uint16 *comment;
|
|
dfs_VolumeState state;
|
|
uint32 num_stores;
|
|
} dfs_Info2;
|
|
|
|
const int DFS_STORAGE_STATES = 0xf;
|
|
|
|
/* yes, this is a bitmap */
|
|
typedef [public,bitmap32bit] bitmap {
|
|
DFS_STORAGE_STATE_OFFLINE = 1,
|
|
DFS_STORAGE_STATE_ONLINE = 2,
|
|
DFS_STORAGE_STATE_ACTIVE = 4
|
|
} dfs_StorageState;
|
|
|
|
typedef struct {
|
|
dfs_StorageState state;
|
|
[string,charset(UTF16)] uint16 *server;
|
|
[string,charset(UTF16)] uint16 *share;
|
|
} dfs_StorageInfo;
|
|
|
|
typedef struct {
|
|
[string,charset(UTF16)] uint16 *path;
|
|
[string,charset(UTF16)] uint16 *comment;
|
|
dfs_VolumeState state;
|
|
uint32 num_stores;
|
|
[size_is(num_stores)] dfs_StorageInfo *stores;
|
|
} dfs_Info3;
|
|
|
|
typedef struct {
|
|
[string,charset(UTF16)] uint16 *path;
|
|
[string,charset(UTF16)] uint16 *comment;
|
|
dfs_VolumeState state;
|
|
uint32 timeout;
|
|
GUID guid;
|
|
uint32 num_stores;
|
|
[size_is(num_stores)] dfs_StorageInfo *stores;
|
|
} dfs_Info4;
|
|
|
|
/* verified with dfsutil */
|
|
typedef [public,bitmap32bit] bitmap {
|
|
DFS_PROPERTY_FLAG_INSITE_REFERRALS = 0x01,
|
|
DFS_PROPERTY_FLAG_ROOT_SCALABILITY = 0x02,
|
|
DFS_PROPERTY_FLAG_SITE_COSTING = 0x04,
|
|
DFS_PROPERTY_FLAG_TARGET_FAILBACK = 0x08,
|
|
DFS_PROPERTY_FLAG_CLUSTER_ENABLED = 0x10 /* untested */
|
|
} dfs_PropertyFlags;
|
|
|
|
typedef struct {
|
|
[string,charset(UTF16)] uint16 *path;
|
|
[string,charset(UTF16)] uint16 *comment;
|
|
dfs_VolumeState state;
|
|
uint32 timeout;
|
|
GUID guid;
|
|
dfs_PropertyFlags flags;
|
|
uint32 pktsize;
|
|
uint32 num_stores;
|
|
} dfs_Info5;
|
|
|
|
typedef [v1_enum] enum {
|
|
DFS_INVALID_PRIORITY_CLASS = -1,
|
|
DFS_SITE_COST_NORMAL_PRIORITY_CLASS = 0,
|
|
DFS_GLOBAL_HIGH_PRIORITY_CLASS = 1,
|
|
DFS_SITE_COST_HIGH_PRIORITY_CLASS = 2,
|
|
DFS_SITE_COST_LOW_PRIORITY_CLASS = 3,
|
|
DFS_GLOBAL_LOW_PRIORITY_CLASS = 4
|
|
} dfs_Target_PriorityClass;
|
|
|
|
typedef struct {
|
|
dfs_Target_PriorityClass target_priority_class;
|
|
uint16 target_priority_rank;
|
|
uint16 reserved;
|
|
} dfs_Target_Priority;
|
|
|
|
typedef struct {
|
|
dfs_StorageInfo info;
|
|
dfs_Target_Priority target_priority;
|
|
} dfs_StorageInfo2;
|
|
|
|
typedef struct {
|
|
[string,charset(UTF16)] uint16 *entry_path;
|
|
[string,charset(UTF16)] uint16 *comment;
|
|
dfs_VolumeState state;
|
|
uint32 timeout;
|
|
GUID guid;
|
|
dfs_PropertyFlags flags;
|
|
uint32 pktsize;
|
|
uint16 num_stores;
|
|
[size_is(num_stores)] dfs_StorageInfo2 *stores;
|
|
} dfs_Info6;
|
|
|
|
typedef struct {
|
|
GUID generation_guid;
|
|
} dfs_Info7;
|
|
|
|
typedef struct {
|
|
[string,charset(UTF16)] uint16 *comment;
|
|
} dfs_Info100;
|
|
|
|
typedef struct {
|
|
dfs_StorageState state;
|
|
} dfs_Info101;
|
|
|
|
typedef struct {
|
|
uint32 timeout;
|
|
} dfs_Info102;
|
|
|
|
typedef struct {
|
|
dfs_PropertyFlags flags;
|
|
} dfs_Info103;
|
|
|
|
typedef struct {
|
|
dfs_Target_Priority priority;
|
|
} dfs_Info104;
|
|
|
|
typedef struct {
|
|
[string,charset(UTF16)] uint16 *comment;
|
|
dfs_VolumeState state;
|
|
uint32 timeout;
|
|
uint32 property_flag_mask;
|
|
uint32 property_flags;
|
|
} dfs_Info105;
|
|
|
|
typedef struct {
|
|
dfs_StorageState state;
|
|
dfs_Target_Priority priority;
|
|
} dfs_Info106;
|
|
|
|
typedef struct {
|
|
[string,charset(UTF16)] uint16 *dom_root;
|
|
} dfs_Info200;
|
|
|
|
typedef enum {
|
|
DFS_VOLUME_FLAVOR_STANDALONE = 0x100,
|
|
DFS_VOLUME_FLAVOR_AD_BLOB = 0x200
|
|
} dfs_VolumeFlavor;
|
|
|
|
typedef struct {
|
|
dfs_VolumeFlavor flavor;
|
|
[string,charset(UTF16)] uint16 *dom_root;
|
|
} dfs_Info300;
|
|
|
|
typedef union {
|
|
[case(0)] dfs_Info0 *info0;
|
|
[case(1)] dfs_Info1 *info1;
|
|
[case(2)] dfs_Info2 *info2;
|
|
[case(3)] dfs_Info3 *info3;
|
|
[case(4)] dfs_Info4 *info4;
|
|
[case(5)] dfs_Info5 *info5;
|
|
[case(6)] dfs_Info6 *info6;
|
|
[case(7)] dfs_Info7 *info7;
|
|
[case(100)] dfs_Info100 *info100;
|
|
[case(101)] dfs_Info101 *info101;
|
|
[case(102)] dfs_Info102 *info102;
|
|
[case(103)] dfs_Info103 *info103;
|
|
[case(104)] dfs_Info104 *info104;
|
|
[case(105)] dfs_Info105 *info105;
|
|
[case(106)] dfs_Info106 *info106;
|
|
} dfs_Info;
|
|
|
|
WERROR dfs_SetInfo (
|
|
[in] [string,charset(UTF16)] uint16 dfs_entry_path[],
|
|
[in,unique] [string,charset(UTF16)] uint16 *servername,
|
|
[in,unique] [string,charset(UTF16)] uint16 *sharename,
|
|
[in] uint32 level,
|
|
[in,ref,switch_is(level)] dfs_Info *info
|
|
);
|
|
|
|
/******************/
|
|
/* Function: 0x04 */
|
|
WERROR dfs_GetInfo (
|
|
[in] [string,charset(UTF16)] uint16 dfs_entry_path[],
|
|
[in,unique] [string,charset(UTF16)] uint16 *servername,
|
|
[in,unique] [string,charset(UTF16)] uint16 *sharename,
|
|
[in] uint32 level,
|
|
[out,switch_is(level)] dfs_Info *info
|
|
);
|
|
|
|
/******************/
|
|
/* Function: 0x05 */
|
|
|
|
typedef struct {
|
|
uint32 count;
|
|
[size_is(count)] dfs_Info1 *s;
|
|
} dfs_EnumArray1;
|
|
|
|
typedef struct {
|
|
uint32 count;
|
|
[size_is(count)] dfs_Info2 *s;
|
|
} dfs_EnumArray2;
|
|
|
|
typedef struct {
|
|
uint32 count;
|
|
[size_is(count)] dfs_Info3 *s;
|
|
} dfs_EnumArray3;
|
|
|
|
typedef struct {
|
|
uint32 count;
|
|
[size_is(count)] dfs_Info4 *s;
|
|
} dfs_EnumArray4;
|
|
|
|
typedef struct {
|
|
uint32 count;
|
|
[size_is(count)] dfs_Info200 *s;
|
|
} dfs_EnumArray200;
|
|
|
|
typedef struct {
|
|
uint32 count;
|
|
[size_is(count)] dfs_Info300 *s;
|
|
} dfs_EnumArray300;
|
|
|
|
|
|
typedef union {
|
|
[case(1)] dfs_EnumArray1 *info1;
|
|
[case(2)] dfs_EnumArray2 *info2;
|
|
[case(3)] dfs_EnumArray3 *info3;
|
|
[case(4)] dfs_EnumArray4 *info4;
|
|
[case(200)] dfs_EnumArray200 *info200;
|
|
[case(300)] dfs_EnumArray300 *info300;
|
|
} dfs_EnumInfo;
|
|
|
|
typedef struct {
|
|
uint32 level;
|
|
[switch_is(level)] dfs_EnumInfo e;
|
|
} dfs_EnumStruct;
|
|
|
|
WERROR dfs_Enum (
|
|
[in] uint32 level,
|
|
[in] uint32 bufsize,
|
|
[in,out,unique] dfs_EnumStruct *info,
|
|
[in,out,unique] uint32 *total
|
|
);
|
|
|
|
/* Function 0x06 */
|
|
WERROR dfs_Rename();
|
|
|
|
/* Function 0x07 */
|
|
WERROR dfs_Move();
|
|
|
|
/* Function 0x08 */
|
|
WERROR dfs_ManagerGetConfigInfo();
|
|
|
|
/* Function 0x09 */
|
|
WERROR dfs_ManagerSendSiteInfo();
|
|
|
|
/* Function 0x0a */
|
|
typedef struct {
|
|
uint32 unknown1;
|
|
[string,charset(UTF16)] uint16 *unknown2;
|
|
} dfs_UnknownStruct;
|
|
|
|
WERROR dfs_AddFtRoot(
|
|
[in] [string,charset(UTF16)] uint16 servername[],
|
|
[in] [string,charset(UTF16)] uint16 dns_servername[],
|
|
[in] [string,charset(UTF16)] uint16 dfsname[],
|
|
[in] [string,charset(UTF16)] uint16 rootshare[],
|
|
[in] [string,charset(UTF16)] uint16 comment[],
|
|
[in] [string,charset(UTF16)] uint16 dfs_config_dn[],
|
|
[in] uint8 unknown1,
|
|
[in] uint32 flags,
|
|
[in,out,unique] dfs_UnknownStruct **unknown2
|
|
);
|
|
|
|
/* Function 0x0b */
|
|
WERROR dfs_RemoveFtRoot(
|
|
[in] [string,charset(UTF16)] uint16 servername[],
|
|
[in] [string,charset(UTF16)] uint16 dns_servername[],
|
|
[in] [string,charset(UTF16)] uint16 dfsname[],
|
|
[in] [string,charset(UTF16)] uint16 rootshare[],
|
|
[in] uint32 flags,
|
|
[in,out,unique] dfs_UnknownStruct **unknown
|
|
);
|
|
|
|
/* Function 0x0c */
|
|
WERROR dfs_AddStdRoot(
|
|
[in] [string,charset(UTF16)] uint16 servername[],
|
|
[in] [string,charset(UTF16)] uint16 rootshare[],
|
|
[in] [string,charset(UTF16)] uint16 comment[],
|
|
[in] uint32 flags
|
|
);
|
|
|
|
/* Function 0x0d */
|
|
WERROR dfs_RemoveStdRoot(
|
|
[in] [string,charset(UTF16)] uint16 servername[],
|
|
[in] [string,charset(UTF16)] uint16 rootshare[],
|
|
[in] uint32 flags
|
|
);
|
|
|
|
/* Function 0x0e */
|
|
WERROR dfs_ManagerInitialize(
|
|
[in] [string,charset(UTF16)] uint16 *servername,
|
|
[in] uint32 flags
|
|
);
|
|
|
|
/* Function 0x0f */
|
|
WERROR dfs_AddStdRootForced(
|
|
[in] [string,charset(UTF16)] uint16 servername[],
|
|
[in] [string,charset(UTF16)] uint16 rootshare[],
|
|
[in] [string,charset(UTF16)] uint16 comment[],
|
|
[in] [string,charset(UTF16)] uint16 store[] /* C:\\whatever */
|
|
);
|
|
|
|
/* Function 0x10 */
|
|
WERROR dfs_GetDcAddress();
|
|
|
|
/* Function 0x11 */
|
|
WERROR dfs_SetDcAddress();
|
|
|
|
/* Function 0x12 */
|
|
WERROR dfs_FlushFtTable(
|
|
[in] [string,charset(UTF16)] uint16 servername[],
|
|
[in] [string,charset(UTF16)] uint16 rootshare[]
|
|
);
|
|
|
|
/* Function 0x13 */
|
|
WERROR dfs_Add2();
|
|
|
|
/* Function 0x14 */
|
|
WERROR dfs_Remove2();
|
|
|
|
/* Function 0x15 */
|
|
WERROR dfs_EnumEx(
|
|
[in] [string,charset(UTF16)] uint16 dfs_name[],
|
|
[in] uint32 level,
|
|
[in] uint32 bufsize,
|
|
[in,out,unique] dfs_EnumStruct *info,
|
|
[in,out,unique] uint32 *total
|
|
);
|
|
|
|
/* Function 0x16 */
|
|
WERROR dfs_SetInfo2();
|
|
}
|