/*++ Copyright (c) 1996 Microsoft Corporation Module Name: NETDFS.IDL Abstract: Contains the Netr (Net Remote) RPC interface specification for the API associated with the Dfs Manager Service. This includes the following APIs: NetDfsEnum Also contains the RPC specific data structures for these API. Author: Milan Shah (milans) 08-Jan-1996 Environment: User Mode - Win32 - MIDL Revision History: 08-Jan-1996 Milans Created. --*/ // // Interface Attributes // [ uuid(4fc742e0-4a10-11cf-8273-00aa004ae673), version(3.0), #ifdef __midl ms_union, #endif // __midl pointer_default(unique) ] interface netdfs { import "import.idl"; #include // // Data structures used by the public Dfs interface // typedef struct _DFS_INFO_1_CONTAINER { DWORD EntriesRead; [size_is(EntriesRead)] LPDFS_INFO_1 Buffer; } DFS_INFO_1_CONTAINER, *LPDFS_INFO_1_CONTAINER; typedef struct _DFS_INFO_2_CONTAINER { DWORD EntriesRead; [size_is(EntriesRead)] LPDFS_INFO_2 Buffer; } DFS_INFO_2_CONTAINER, *LPDFS_INFO_2_CONTAINER; typedef struct _DFS_INFO_3_CONTAINER { DWORD EntriesRead; [size_is(EntriesRead)] LPDFS_INFO_3 Buffer; } DFS_INFO_3_CONTAINER, *LPDFS_INFO_3_CONTAINER; typedef struct _DFS_INFO_ENUM_STRUCT { DWORD Level; [switch_is(Level)] union { [case(1)] LPDFS_INFO_1_CONTAINER DfsInfo1Container; [case(2)] LPDFS_INFO_2_CONTAINER DfsInfo2Container; [case(3)] LPDFS_INFO_3_CONTAINER DfsInfo3Container; } DfsInfoContainer; } DFS_INFO_ENUM_STRUCT, *LPDFS_INFO_ENUM_STRUCT; typedef [switch_type(unsigned long)] union _DFS_INFO_STRUCT { [case(1)] LPDFS_INFO_1 DfsInfo1; [case(2)] LPDFS_INFO_2 DfsInfo2; [case(3)] LPDFS_INFO_3 DfsInfo3; [case(100)] LPDFS_INFO_100 DfsInfo100; [case(101)] LPDFS_INFO_101 DfsInfo101; [default] ; } DFS_INFO_STRUCT, *LPDFS_INFO_STRUCT; // // Data structures are used by the private Dfs Manager interface // typedef struct _DFSM_ENTRY_ID { GUID idSubordinate; [string, unique] LPWSTR wszSubordinate; } DFSM_ENTRY_ID, *LPDFSM_ENTRY_ID; typedef struct _DFSM_RELATION_INFO { DWORD cSubordinates; [size_is(cSubordinates)] DFSM_ENTRY_ID eid[]; } DFSM_RELATION_INFO, *LPDFSM_RELATION_INFO; // // The public Dfs interface methods // DWORD NetrDfsManagerGetVersion(); NET_API_STATUS NetrDfsAdd( [in,string] LPWSTR DfsEntryPath, [in,string] LPWSTR ServerName, [in,unique,string] LPWSTR ShareName, [in,unique,string] LPWSTR Comment, [in] DWORD Flags); NET_API_STATUS NetrDfsRemove( [in,string] LPWSTR DfsEntryPath, [in,unique,string] LPWSTR ServerName, [in,unique,string] LPWSTR ShareName); NET_API_STATUS NetrDfsSetInfo( [in,string] LPWSTR DfsEntryPath, [in,unique,string] LPWSTR ServerName, [in,unique,string] LPWSTR ShareName, [in] DWORD Level, [in,switch_is(Level)] LPDFS_INFO_STRUCT DfsInfo); NET_API_STATUS NetrDfsGetInfo( [in,string] LPWSTR DfsEntryPath, [in,unique,string] LPWSTR ServerName, [in,unique,string] LPWSTR ShareName, [in] DWORD Level, [out,switch_is(Level)] LPDFS_INFO_STRUCT DfsInfo); NET_API_STATUS NetrDfsEnum( [in] DWORD Level, [in] DWORD PrefMaxLen, [in,out,unique] LPDFS_INFO_ENUM_STRUCT DfsEnum, [in,out,unique] LPDWORD ResumeHandle); NET_API_STATUS NetrDfsMove( [in,string] LPWSTR DfsEntryPath, [in,string] LPWSTR NewDfsEntryPath); NET_API_STATUS NetrDfsRename( [in,string] LPWSTR Path, [in,string] LPWSTR NewPath); // // The private Dfs Manager methods // NET_API_STATUS NetrDfsManagerGetConfigInfo( [in, string] LPWSTR wszServer, [in, string] LPWSTR wszLocalVolumeEntryPath, [in] GUID idLocalVolume, [in, out, unique] LPDFSM_RELATION_INFO *ppRelationInfo); }