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