/*++
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 <lmcons.h>
//
// 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);
}