/* header auto-generated by pidl */

#include <stdint.h>

#ifndef _HEADER_netdfs
#define _HEADER_netdfs

#define DFS_STORAGE_STATES	( 0xf )
#ifndef USE_UINT_ENUMS
enum dfs_ManagerVersion {
	DFS_MANAGER_VERSION_NT4=1,
	DFS_MANAGER_VERSION_W2K=2,
	DFS_MANAGER_VERSION_W2K3=4
}
#else
enum dfs_ManagerVersion { __donnot_use_enum_dfs_ManagerVersion=0x7FFFFFFF}
#define DFS_MANAGER_VERSION_NT4 ( 1 )
#define DFS_MANAGER_VERSION_W2K ( 2 )
#define DFS_MANAGER_VERSION_W2K3 ( 4 )
#endif
;

struct dfs_Info0 {
	char _empty_;
};

struct dfs_Info1 {
	const char *path;/* [unique,charset(UTF16)] */
};

/* bitmap dfs_VolumeState */
#define DFS_VOLUME_STATE_OK ( 0x1 )
#define DFS_VOLUME_STATE_INCONSISTENT ( 0x2 )
#define DFS_VOLUME_STATE_OFFLINE ( 0x4 )
#define DFS_VOLUME_STATE_ONLINE ( 0x8 )
#define DFS_VOLUME_STATE_STANDALONE ( DFS_VOLUME_FLAVOR_STANDALONE )
#define DFS_VOLUME_STATE_AD_BLOB ( DFS_VOLUME_FLAVOR_AD_BLOB )

;

struct dfs_Info2 {
	const char *path;/* [unique,charset(UTF16)] */
	const char *comment;/* [unique,charset(UTF16)] */
	uint32_t state;
	uint32_t num_stores;
};

/* bitmap dfs_StorageState */
#define DFS_STORAGE_STATE_OFFLINE ( 1 )
#define DFS_STORAGE_STATE_ONLINE ( 2 )
#define DFS_STORAGE_STATE_ACTIVE ( 4 )

;

struct dfs_StorageInfo {
	uint32_t state;
	const char *server;/* [unique,charset(UTF16)] */
	const char *share;/* [unique,charset(UTF16)] */
};

struct dfs_Info3 {
	const char *path;/* [unique,charset(UTF16)] */
	const char *comment;/* [unique,charset(UTF16)] */
	uint32_t state;
	uint32_t num_stores;
	struct dfs_StorageInfo *stores;/* [unique,size_is(num_stores)] */
};

struct dfs_Info4 {
	const char *path;/* [unique,charset(UTF16)] */
	const char *comment;/* [unique,charset(UTF16)] */
	uint32_t state;
	uint32_t timeout;
	struct GUID guid;
	uint32_t num_stores;
	struct dfs_StorageInfo *stores;/* [unique,size_is(num_stores)] */
};

/* bitmap dfs_PropertyFlags */
#define DFS_PROPERTY_FLAG_INSITE_REFERRALS ( 0x01 )
#define DFS_PROPERTY_FLAG_ROOT_SCALABILITY ( 0x02 )
#define DFS_PROPERTY_FLAG_SITE_COSTING ( 0x04 )
#define DFS_PROPERTY_FLAG_TARGET_FAILBACK ( 0x08 )
#define DFS_PROPERTY_FLAG_CLUSTER_ENABLED ( 0x10 )

;

struct dfs_Info5 {
	const char *path;/* [unique,charset(UTF16)] */
	const char *comment;/* [unique,charset(UTF16)] */
	uint32_t state;
	uint32_t timeout;
	struct GUID guid;
	uint32_t flags;
	uint32_t pktsize;
	uint32_t num_stores;
};

#ifndef USE_UINT_ENUMS
enum dfs_Target_PriorityClass {
	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
}
#else
enum dfs_Target_PriorityClass { __donnot_use_enum_dfs_Target_PriorityClass=0x7FFFFFFF}
#define DFS_INVALID_PRIORITY_CLASS ( -1 )
#define DFS_SITE_COST_NORMAL_PRIORITY_CLASS ( 0 )
#define DFS_GLOBAL_HIGH_PRIORITY_CLASS ( 1 )
#define DFS_SITE_COST_HIGH_PRIORITY_CLASS ( 2 )
#define DFS_SITE_COST_LOW_PRIORITY_CLASS ( 3 )
#define DFS_GLOBAL_LOW_PRIORITY_CLASS ( 4 )
#endif
;

struct dfs_Target_Priority {
	enum dfs_Target_PriorityClass target_priority_class;
	uint16_t target_priority_rank;
	uint16_t reserved;
};

struct dfs_StorageInfo2 {
	struct dfs_StorageInfo info;
	struct dfs_Target_Priority target_priority;
};

struct dfs_Info6 {
	const char *entry_path;/* [unique,charset(UTF16)] */
	const char *comment;/* [unique,charset(UTF16)] */
	uint32_t state;
	uint32_t timeout;
	struct GUID guid;
	uint32_t flags;
	uint32_t pktsize;
	uint16_t num_stores;
	struct dfs_StorageInfo2 *stores;/* [unique,size_is(num_stores)] */
};

struct dfs_Info7 {
	struct GUID generation_guid;
};

struct dfs_Info100 {
	const char *comment;/* [unique,charset(UTF16)] */
};

struct dfs_Info101 {
	uint32_t state;
};

struct dfs_Info102 {
	uint32_t timeout;
};

struct dfs_Info103 {
	uint32_t flags;
};

struct dfs_Info104 {
	struct dfs_Target_Priority priority;
};

struct dfs_Info105 {
	const char *comment;/* [unique,charset(UTF16)] */
	uint32_t state;
	uint32_t timeout;
	uint32_t property_flag_mask;
	uint32_t property_flags;
};

struct dfs_Info106 {
	uint32_t state;
	struct dfs_Target_Priority priority;
};

struct dfs_Info200 {
	const char *dom_root;/* [unique,charset(UTF16)] */
};

#ifndef USE_UINT_ENUMS
enum dfs_VolumeFlavor {
	DFS_VOLUME_FLAVOR_STANDALONE=0x100,
	DFS_VOLUME_FLAVOR_AD_BLOB=0x200
}
#else
enum dfs_VolumeFlavor { __donnot_use_enum_dfs_VolumeFlavor=0x7FFFFFFF}
#define DFS_VOLUME_FLAVOR_STANDALONE ( 0x100 )
#define DFS_VOLUME_FLAVOR_AD_BLOB ( 0x200 )
#endif
;

struct dfs_Info300 {
	enum dfs_VolumeFlavor flavor;
	const char *dom_root;/* [unique,charset(UTF16)] */
};

union dfs_Info {
	struct dfs_Info0 *info0;/* [unique,case(0)] */
	struct dfs_Info1 *info1;/* [unique,case] */
	struct dfs_Info2 *info2;/* [unique,case(2)] */
	struct dfs_Info3 *info3;/* [unique,case(3)] */
	struct dfs_Info4 *info4;/* [unique,case(4)] */
	struct dfs_Info5 *info5;/* [unique,case(5)] */
	struct dfs_Info6 *info6;/* [unique,case(6)] */
	struct dfs_Info7 *info7;/* [unique,case(7)] */
	struct dfs_Info100 *info100;/* [unique,case(100)] */
	struct dfs_Info101 *info101;/* [unique,case(101)] */
	struct dfs_Info102 *info102;/* [unique,case(102)] */
	struct dfs_Info103 *info103;/* [unique,case(103)] */
	struct dfs_Info104 *info104;/* [unique,case(104)] */
	struct dfs_Info105 *info105;/* [unique,case(105)] */
	struct dfs_Info106 *info106;/* [unique,case(106)] */
};

struct dfs_EnumArray1 {
	uint32_t count;
	struct dfs_Info1 *s;/* [unique,size_is(count)] */
};

struct dfs_EnumArray2 {
	uint32_t count;
	struct dfs_Info2 *s;/* [unique,size_is(count)] */
};

struct dfs_EnumArray3 {
	uint32_t count;
	struct dfs_Info3 *s;/* [unique,size_is(count)] */
};

struct dfs_EnumArray4 {
	uint32_t count;
	struct dfs_Info4 *s;/* [unique,size_is(count)] */
};

struct dfs_EnumArray200 {
	uint32_t count;
	struct dfs_Info200 *s;/* [unique,size_is(count)] */
};

struct dfs_EnumArray300 {
	uint32_t count;
	struct dfs_Info300 *s;/* [unique,size_is(count)] */
};

union dfs_EnumInfo {
	struct dfs_EnumArray1 *info1;/* [unique,case] */
	struct dfs_EnumArray2 *info2;/* [unique,case(2)] */
	struct dfs_EnumArray3 *info3;/* [unique,case(3)] */
	struct dfs_EnumArray4 *info4;/* [unique,case(4)] */
	struct dfs_EnumArray200 *info200;/* [unique,case(200)] */
	struct dfs_EnumArray300 *info300;/* [unique,case(300)] */
};

struct dfs_EnumStruct {
	uint32_t level;
	union dfs_EnumInfo e;/* [switch_is(level)] */
};

struct dfs_UnknownStruct {
	uint32_t unknown1;
	const char *unknown2;/* [unique,charset(UTF16)] */
};


struct dfs_GetManagerVersion {
	struct {
		enum dfs_ManagerVersion *version;/* [ref] */
	} out;

};


struct dfs_Add {
	struct {
		const char *path;/* [ref,charset(UTF16)] */
		const char *server;/* [ref,charset(UTF16)] */
		const char *share;/* [unique,charset(UTF16)] */
		const char *comment;/* [unique,charset(UTF16)] */
		uint32_t flags;
	} in;

	struct {
		WERROR result;
	} out;

};


struct dfs_Remove {
	struct {
		const char *dfs_entry_path;/* [ref,charset(UTF16)] */
		const char *servername;/* [unique,charset(UTF16)] */
		const char *sharename;/* [unique,charset(UTF16)] */
	} in;

	struct {
		WERROR result;
	} out;

};


struct dfs_SetInfo {
	struct {
		const char *dfs_entry_path;/* [charset(UTF16)] */
		const char *servername;/* [unique,charset(UTF16)] */
		const char *sharename;/* [unique,charset(UTF16)] */
		uint32_t level;
		union dfs_Info *info;/* [ref,switch_is(level)] */
	} in;

	struct {
		WERROR result;
	} out;

};


struct dfs_GetInfo {
	struct {
		const char *dfs_entry_path;/* [charset(UTF16)] */
		const char *servername;/* [unique,charset(UTF16)] */
		const char *sharename;/* [unique,charset(UTF16)] */
		uint32_t level;
	} in;

	struct {
		union dfs_Info *info;/* [ref,switch_is(level)] */
		WERROR result;
	} out;

};


struct dfs_Enum {
	struct {
		uint32_t level;
		uint32_t bufsize;
		struct dfs_EnumStruct *info;/* [unique] */
		uint32_t *total;/* [unique] */
	} in;

	struct {
		struct dfs_EnumStruct *info;/* [unique] */
		uint32_t *total;/* [unique] */
		WERROR result;
	} out;

};


struct dfs_Rename {
	struct {
		WERROR result;
	} out;

};


struct dfs_Move {
	struct {
		WERROR result;
	} out;

};


struct dfs_ManagerGetConfigInfo {
	struct {
		WERROR result;
	} out;

};


struct dfs_ManagerSendSiteInfo {
	struct {
		WERROR result;
	} out;

};


struct dfs_AddFtRoot {
	struct {
		const char *servername;/* [charset(UTF16)] */
		const char *dns_servername;/* [charset(UTF16)] */
		const char *dfsname;/* [charset(UTF16)] */
		const char *rootshare;/* [charset(UTF16)] */
		const char *comment;/* [charset(UTF16)] */
		const char *dfs_config_dn;/* [charset(UTF16)] */
		uint8_t unknown1;
		uint32_t flags;
		struct dfs_UnknownStruct **unknown2;/* [unique] */
	} in;

	struct {
		struct dfs_UnknownStruct **unknown2;/* [unique] */
		WERROR result;
	} out;

};


struct dfs_RemoveFtRoot {
	struct {
		const char *servername;/* [charset(UTF16)] */
		const char *dns_servername;/* [charset(UTF16)] */
		const char *dfsname;/* [charset(UTF16)] */
		const char *rootshare;/* [charset(UTF16)] */
		uint32_t flags;
		struct dfs_UnknownStruct **unknown;/* [unique] */
	} in;

	struct {
		struct dfs_UnknownStruct **unknown;/* [unique] */
		WERROR result;
	} out;

};


struct dfs_AddStdRoot {
	struct {
		const char *servername;/* [charset(UTF16)] */
		const char *rootshare;/* [charset(UTF16)] */
		const char *comment;/* [charset(UTF16)] */
		uint32_t flags;
	} in;

	struct {
		WERROR result;
	} out;

};


struct dfs_RemoveStdRoot {
	struct {
		const char *servername;/* [charset(UTF16)] */
		const char *rootshare;/* [charset(UTF16)] */
		uint32_t flags;
	} in;

	struct {
		WERROR result;
	} out;

};


struct dfs_ManagerInitialize {
	struct {
		const char *servername;/* [ref,charset(UTF16)] */
		uint32_t flags;
	} in;

	struct {
		WERROR result;
	} out;

};


struct dfs_AddStdRootForced {
	struct {
		const char *servername;/* [charset(UTF16)] */
		const char *rootshare;/* [charset(UTF16)] */
		const char *comment;/* [charset(UTF16)] */
		const char *store;/* [charset(UTF16)] */
	} in;

	struct {
		WERROR result;
	} out;

};


struct dfs_GetDcAddress {
	struct {
		WERROR result;
	} out;

};


struct dfs_SetDcAddress {
	struct {
		WERROR result;
	} out;

};


struct dfs_FlushFtTable {
	struct {
		const char *servername;/* [charset(UTF16)] */
		const char *rootshare;/* [charset(UTF16)] */
	} in;

	struct {
		WERROR result;
	} out;

};


struct dfs_Add2 {
	struct {
		WERROR result;
	} out;

};


struct dfs_Remove2 {
	struct {
		WERROR result;
	} out;

};


struct dfs_EnumEx {
	struct {
		const char *dfs_name;/* [charset(UTF16)] */
		uint32_t level;
		uint32_t bufsize;
		struct dfs_EnumStruct *info;/* [unique] */
		uint32_t *total;/* [unique] */
	} in;

	struct {
		struct dfs_EnumStruct *info;/* [unique] */
		uint32_t *total;/* [unique] */
		WERROR result;
	} out;

};


struct dfs_SetInfo2 {
	struct {
		WERROR result;
	} out;

};

#endif /* _HEADER_netdfs */