windows-nt/Source/XPSP1/NT/ds/netapi/svcdlls/dfs/netdfs.idl
2020-09-26 16:20:57 +08:00

327 lines
9.6 KiB
Plaintext

/*++
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_4_CONTAINER {
DWORD EntriesRead;
[size_is(EntriesRead)] LPDFS_INFO_4 Buffer;
} DFS_INFO_4_CONTAINER, *LPDFS_INFO_4_CONTAINER;
typedef struct _DFS_INFO_200_CONTAINER {
DWORD EntriesRead;
[size_is(EntriesRead)] LPDFS_INFO_200 Buffer;
} DFS_INFO_200_CONTAINER, *LPDFS_INFO_200_CONTAINER;
typedef struct _DFS_INFO_300_CONTAINER {
DWORD EntriesRead;
[size_is(EntriesRead)] LPDFS_INFO_300 Buffer;
} DFS_INFO_300_CONTAINER, *LPDFS_INFO_300_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;
[case(4)]
LPDFS_INFO_4_CONTAINER DfsInfo4Container;
[case(200)]
LPDFS_INFO_200_CONTAINER DfsInfo200Container;
[case(300)]
LPDFS_INFO_300_CONTAINER DfsInfo300Container;
} 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(4)]
LPDFS_INFO_4 DfsInfo4;
[case(100)]
LPDFS_INFO_100 DfsInfo100;
[case(101)]
LPDFS_INFO_101 DfsInfo101;
[case(102)]
LPDFS_INFO_102 DfsInfo102;
[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;
typedef struct _DFSM_ROOT_LIST_ENTRY {
[string, unique] LPWSTR ServerShare;
} DFSM_ROOT_LIST_ENTRY, *PDFSM_ROOT_LIST_ENTRY, *LPDFSM_ROOT_LIST_ENTRY;
typedef struct _DFSM_ROOT_LIST {
DWORD cEntries;
[size_is(cEntries)] DFSM_ROOT_LIST_ENTRY Entry[];
} DFSM_ROOT_LIST, *PDFSM_ROOT_LIST, *LPDFSM_ROOT_LIST;
//
// 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);
NET_API_STATUS NetrDfsManagerSendSiteInfo(
[in, string] LPWSTR wszServer,
[in] LPDFS_SITELIST_INFO pSiteInfo);
//
// Remote setup/teardown apis
//
NET_API_STATUS NetrDfsAddFtRoot(
[in,string] LPWSTR ServerName,
[in,string] LPWSTR DcName,
[in,string] LPWSTR RootShare,
[in,string] LPWSTR FtDfsName,
[in,string] LPWSTR Comment,
[in,string] LPWSTR ConfigDN,
[in] BOOLEAN NewFtDfs,
[in] DWORD Flags,
[in,out,unique] PDFSM_ROOT_LIST *ppRootList);
NET_API_STATUS NetrDfsRemoveFtRoot(
[in,string] LPWSTR ServerName,
[in,string] LPWSTR DcName,
[in,string] LPWSTR RootShare,
[in,string] LPWSTR FtDfsName,
[in] DWORD Flags,
[in,out,unique] PDFSM_ROOT_LIST *ppRootList);
NET_API_STATUS NetrDfsAddStdRoot(
[in,string] LPWSTR ServerName,
[in,string] LPWSTR RootShare,
[in,string] LPWSTR Comment,
[in] DWORD Flags);
NET_API_STATUS NetrDfsRemoveStdRoot(
[in,string] LPWSTR ServerName,
[in,string] LPWSTR RootShare,
[in] DWORD Flags);
// Reinitialize the Dfs Manager
//
NET_API_STATUS NetrDfsManagerInitialize(
[in,string] LPWSTR ServerName,
[in] DWORD Flags);
//
// Create a root with the share offline
//
NET_API_STATUS NetrDfsAddStdRootForced(
[in,string] LPWSTR ServerName,
[in,string] LPWSTR RootShare,
[in,string] LPWSTR Comment,
[in,string] LPWSTR Share);
//
// Api's for setting up an FtDfs root
//
NET_API_STATUS NetrDfsGetDcAddress(
[in,string] LPWSTR ServerName,
[in,out,string] LPWSTR *DcName,
[in,out] BOOLEAN *IsRoot,
[in,out] ULONG *Timeout);
//
// Api to direct an FtDfs root server to a specific DC
//
NET_API_STATUS NetrDfsSetDcAddress(
[in,string] LPWSTR ServerName,
[in,string] LPWSTR DcName,
[in] DWORD Timeout,
[in] DWORD Flags);
//
// Api to tell a DC to flush an FtDfs entry from its cache
//
NET_API_STATUS NetrDfsFlushFtTable(
[in,string] LPWSTR DcName,
[in,string] LPWSTR wszFtDfsName);
//
// New apis to work with Ft roots
//
NET_API_STATUS NetrDfsAdd2(
[in,string] LPWSTR DfsEntryPath,
[in,string] LPWSTR DcName,
[in,string] LPWSTR ServerName,
[in,unique,string] LPWSTR ShareName,
[in,unique,string] LPWSTR Comment,
[in] DWORD Flags,
[in,out,unique] PDFSM_ROOT_LIST *ppRootList);
NET_API_STATUS NetrDfsRemove2(
[in,string] LPWSTR DfsEntryPath,
[in,string] LPWSTR DcName,
[in,unique,string] LPWSTR ServerName,
[in,unique,string] LPWSTR ShareName,
[in,out,unique] PDFSM_ROOT_LIST *ppRootList);
NET_API_STATUS NetrDfsEnumEx(
[in,string] LPWSTR DfsEntryPath,
[in] DWORD Level,
[in] DWORD PrefMaxLen,
[in,out,unique] LPDFS_INFO_ENUM_STRUCT DfsEnum,
[in,out,unique] LPDWORD ResumeHandle);
NET_API_STATUS NetrDfsSetInfo2(
[in,string] LPWSTR DfsEntryPath,
[in,string] LPWSTR DcName,
[in,unique,string] LPWSTR ServerName,
[in,unique,string] LPWSTR ShareName,
[in] DWORD Level,
[in,switch_is(Level)] LPDFS_INFO_STRUCT pDfsInfo,
[in,out,unique] PDFSM_ROOT_LIST *ppRootList);
}