327 lines
9.6 KiB
Plaintext
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);
|
||
|
}
|