/* dfs interface definition */ [ uuid(4fc742e0-4a10-11cf-8273-00aa004ae673), version(3.0), pointer_default(unique) ] interface netdfs { /******************/ /* Function: 0x00 */ void dfs_Exist( [out,ref] uint32 *exist_flag ); /******************/ /* Function: 0x01 */ NTSTATUS dfs_Add ( [in,ref] unistr *path, [in,ref] unistr *server, [in] unistr *share, [in] unistr *comment, [in] uint32 flags ); /******************/ /* Function: 0x02 */ NTSTATUS dfs_Remove ( [in,ref] unistr *path, [in] unistr *server, [in] unistr *share ); /******************/ /* Function: 0x03 */ NTSTATUS dfs_UNKNOWN3 (); /******************/ /* Function: 0x04 */ typedef struct { unistr *path; } dfs_Info1; typedef struct { unistr *path; unistr *comment; uint32 state; uint32 num_stores; } dfs_Info2; typedef struct { uint32 state; unistr *server; unistr *share; } dfs_StorageInfo; typedef struct { unistr *path; unistr *comment; uint32 state; uint32 num_stores; [size_is(num_stores)] dfs_StorageInfo *stores; } dfs_Info3; typedef struct { unistr *path; unistr *comment; uint32 state; uint32 timeout; GUID guid; uint32 num_stores; [size_is(num_stores)] dfs_StorageInfo *stores; } dfs_Info4; typedef struct { unistr *comment; } dfs_Info100; typedef struct { uint32 state; } dfs_Info101; typedef struct { uint32 timeout; } dfs_Info102; typedef struct { unistr *dom_root; } dfs_Info200; typedef struct { uint32 flags; unistr *dom_root; } dfs_Info300; typedef union { case(1) dfs_Info1 *info1; case(2) dfs_Info2 *info2; case(3) dfs_Info3 *info3; case(4) dfs_Info4 *info4; case(100) dfs_Info100 *info100; case(101) dfs_Info101 *info101; case(102) dfs_Info102 *info102; case(200) dfs_Info200 *info200; case(300) dfs_Info300 *info300; } dfs_Info; NTSTATUS dfs_GetInfo ( [in,ref] unistr *path, [in] unistr *server, [in] unistr *share, [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; NTSTATUS dfs_Enum ( [in] uint32 level, [in] uint32 bufsize, [in,out] dfs_EnumStruct *info, [in] uint32 *unknown, [in,out] uint32 *total ); }