https://git.reactos.org/?p=reactos.git;a=commitdiff;h=956086d369727a2c15604…
commit 956086d369727a2c15604a997277a1838736ba8a
Author: Eric Kohl <eric.kohl(a)reactos.org>
AuthorDate: Sun Aug 12 14:13:26 2018 +0200
Commit: Eric Kohl <eric.kohl(a)reactos.org>
CommitDate: Sun Aug 12 14:31:07 2018 +0200
[NETAPI32] Add DFS RPC interface and some DFS stubs
---
dll/win32/netapi32/CMakeLists.txt | 3 +
dll/win32/netapi32/dfs.c | 128 ++++++++
dll/win32/netapi32/netapi32.spec | 14 +-
sdk/include/reactos/idl/netdfs.idl | 581 +++++++++++++++++++++++++++++++++++++
4 files changed, 719 insertions(+), 7 deletions(-)
diff --git a/dll/win32/netapi32/CMakeLists.txt b/dll/win32/netapi32/CMakeLists.txt
index 0339f76604..c5066c09e4 100644
--- a/dll/win32/netapi32/CMakeLists.txt
+++ b/dll/win32/netapi32/CMakeLists.txt
@@ -9,6 +9,7 @@ add_rpc_files(client
${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/atsvc.idl
${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/browser.idl
${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/dssetup.idl
+ ${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/netdfs.idl
${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/netlogon.idl
${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/srvsvc.idl
${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/wkssvc.idl)
@@ -16,6 +17,7 @@ add_rpc_files(client
list(APPEND SOURCE
apibuf.c
browser.c
+ dfs.c
display.c
dssetup.c
group.c
@@ -38,6 +40,7 @@ list(APPEND SOURCE
${CMAKE_CURRENT_BINARY_DIR}/atsvc_c.c
${CMAKE_CURRENT_BINARY_DIR}/browser_c.c
${CMAKE_CURRENT_BINARY_DIR}/dssetup_c.c
+ ${CMAKE_CURRENT_BINARY_DIR}/netdfs_c.c
${CMAKE_CURRENT_BINARY_DIR}/netlogon_c.c
${CMAKE_CURRENT_BINARY_DIR}/srvsvc_c.c
${CMAKE_CURRENT_BINARY_DIR}/wkssvc_c.c)
diff --git a/dll/win32/netapi32/dfs.c b/dll/win32/netapi32/dfs.c
new file mode 100644
index 0000000000..af4bcddaf5
--- /dev/null
+++ b/dll/win32/netapi32/dfs.c
@@ -0,0 +1,128 @@
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: NetAPI DLL
+ * FILE: reactos/dll/win32/netapi32/dfs.c
+ * PURPOSE: Distributed File System Service interface code
+ * PROGRAMMERS: Eric Kohl
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include "netapi32.h"
+
+#include <rpc.h>
+#include "netdfs_c.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(netapi32);
+
+/* FUNCTIONS *****************************************************************/
+
+NET_API_STATUS
+WINAPI
+NetDfsAdd(
+ _In_ LPWSTR DfsEntryPath,
+ _In_ LPWSTR ServerName,
+ _In_ LPWSTR PathName,
+ _In_opt_ LPWSTR Comment,
+ _In_ DWORD Flags)
+{
+#if 0
+ NET_API_STATUS
+ __stdcall
+ status = NetrDfsAdd(DfsEntryPath,
+ ServerName,
+ PathName,
+ Comment,
+ Flags);
+#endif
+ UNIMPLEMENTED;
+ return 0;
+}
+
+
+NET_API_STATUS
+WINAPI
+NetDfsAddFtRoot(
+ _In_ LPWSTR ServerName,
+ _In_ LPWSTR RootShare,
+ _In_ LPWSTR FtDfsName,
+ _In_opt_ LPWSTR Comment,
+ _In_ DWORD Flags)
+{
+ UNIMPLEMENTED;
+ return 0;
+}
+
+
+NET_API_STATUS
+WINAPI
+NetDfsAddStdRoot(
+ _In_ LPWSTR ServerName,
+ _In_ LPWSTR RootShare,
+ _In_opt_ LPWSTR Comment,
+ _In_ DWORD Flags)
+{
+ UNIMPLEMENTED;
+ return 0;
+}
+
+
+NET_API_STATUS
+WINAPI
+NetDfsAddStdRootForced(
+ _In_ LPWSTR ServerName,
+ _In_ LPWSTR RootShare,
+ _In_opt_ LPWSTR Comment,
+ _In_ LPWSTR Store)
+{
+ UNIMPLEMENTED;
+ return 0;
+}
+
+
+NET_API_STATUS
+WINAPI
+NetDfsEnum(
+ _In_ LPWSTR DfsName,
+ _In_ DWORD Level,
+ _In_ DWORD PrefMaxLen,
+ _Out_ LPBYTE *Buffer,
+ _Out_ LPDWORD EntriesRead,
+ _Out_ LPDWORD ResumeHandle)
+{
+ UNIMPLEMENTED;
+ return 0;
+}
+
+
+NET_API_STATUS
+WINAPI
+NetDfsGetClientInfo(
+ _In_ LPWSTR DfsEntryPath,
+ _In_ LPWSTR ServerName,
+ _In_ LPWSTR ShareName,
+ _In_ DWORD Level,
+ _Out_ LPBYTE *Buffer)
+{
+ UNIMPLEMENTED;
+ return 0;
+}
+
+
+/* NetDfsGetDcAddress */
+
+
+NET_API_STATUS
+WINAPI
+NetDfsGetFtContainerSecurity(
+ _In_ LPWSTR DomainName,
+ _In_ SECURITY_INFORMATION SecurityInformation,
+ _Out_ PSECURITY_DESCRIPTOR *ppSecurityDescriptor,
+ _Out_ LPDWORD lpcbSecurityDescriptor)
+{
+ UNIMPLEMENTED;
+ return 0;
+}
+
+
+/* EOF */
diff --git a/dll/win32/netapi32/netapi32.spec b/dll/win32/netapi32/netapi32.spec
index 333d1405b2..d00d2f4162 100644
--- a/dll/win32/netapi32/netapi32.spec
+++ b/dll/win32/netapi32/netapi32.spec
@@ -114,14 +114,14 @@
@ stdcall NetConfigGetAll(wstr wstr ptr)
@ stdcall NetConfigSet(wstr wstr wstr long long ptr long)
@ stdcall NetConnectionEnum(wstr wstr long ptr long ptr ptr ptr)
-@ stub NetDfsAdd
-@ stub NetDfsAddFtRoot
-@ stub NetDfsAddStdRoot
-@ stub NetDfsAddStdRootForced
-@ stub NetDfsEnum
-@ stub NetDfsGetClientInfo
+@ stdcall NetDfsAdd(wstr wstr wstr wstr long)
+@ stdcall NetDfsAddFtRoot(wstr wstr wstr wstr long)
+@ stdcall NetDfsAddStdRoot(wstr wstr wstr long)
+@ stdcall NetDfsAddStdRootForced(wstr wstr wstr wstr)
+@ stdcall NetDfsEnum(wstr long long ptr ptr ptr)
+@ stdcall NetDfsGetClientInfo(wstr wstr wstr long ptr)
@ stub NetDfsGetDcAddress
-@ stub NetDfsGetFtContainerSecurity
+@ stdcall NetDfsGetFtContainerSecurity(wstr long ptr ptr);
@ stub NetDfsGetInfo
@ stub NetDfsGetSecurity
@ stub NetDfsGetStdContainerSecurity
diff --git a/sdk/include/reactos/idl/netdfs.idl b/sdk/include/reactos/idl/netdfs.idl
new file mode 100644
index 0000000000..bd4ca88ce0
--- /dev/null
+++ b/sdk/include/reactos/idl/netdfs.idl
@@ -0,0 +1,581 @@
+/*
+ * Distributed File System service interface definition
+ */
+
+#include <ms-dtyp.idl>
+
+typedef DWORD NET_API_STATUS;
+
+typedef WCHAR *NETDFS_SERVER_OR_DOMAIN_HANDLE;
+
+typedef [v1_enum] enum _DFS_TARGET_PRIORITY_CLASS
+{
+ DfsInvalidPriorityClass = -1,
+ DfsSiteCostNormalPriorityClass = 0,
+ DfsGlobalHighPriorityClass = 1,
+ DfsSiteCostHighPriorityClass = 2,
+ DfsSiteCostLowPriorityClass = 3,
+ DfsGlobalLowPriorityClass = 4
+} DFS_TARGET_PRIORITY_CLASS;
+
+typedef struct _DFS_TARGET_PRIORITY
+{
+ DFS_TARGET_PRIORITY_CLASS TargetPriorityClass;
+ unsigned short TargetPriorityRank;
+ unsigned short Reserved;
+} DFS_TARGET_PRIORITY;
+
+typedef struct _DFS_STORAGE_INFO
+{
+ unsigned long State;
+ [string] WCHAR *ServerName;
+ [string] WCHAR *ShareName;
+} DFS_STORAGE_INFO;
+
+typedef struct _DFS_STORAGE_INFO_1
+{
+ unsigned long State;
+ [string] WCHAR *ServerName;
+ [string] WCHAR * ShareName;
+ DFS_TARGET_PRIORITY TargetPriority;
+} DFS_STORAGE_INFO_1, *PDFS_STORAGE_INFO_1, *LPDFS_STORAGE_INFO_1;
+
+typedef struct _DFSM_ROOT_LIST_ENTRY
+{
+ [string, unique] WCHAR *ServerShare;
+} DFSM_ROOT_LIST_ENTRY;
+
+typedef struct _DFSM_ROOT_LIST
+{
+ DWORD cEntries;
+ [size_is(cEntries)] DFSM_ROOT_LIST_ENTRY Entry[];
+} DFSM_ROOT_LIST;
+
+typedef enum
+{
+ DFS_NAMESPACE_VERSION_ORIGIN_COMBINED = 0,
+ DFS_NAMESPACE_VERSION_ORIGIN_SERVER,
+ DFS_NAMESPACE_VERSION_ORIGIN_DOMAIN
+} DFS_NAMESPACE_VERSION_ORIGIN;
+
+typedef struct _DFS_SUPPORTED_NAMESPACE_VERSION_INFO
+{
+ unsigned long DomainDfsMajorVersion;
+ unsigned long DomainDfsMinorVersion;
+ ULONGLONG DomainDfsCapabilities;
+ unsigned long StandaloneDfsMajorVersion;
+ unsigned long StandaloneDfsMinorVersion;
+ ULONGLONG StandaloneDfsCapabilities;
+} DFS_SUPPORTED_NAMESPACE_VERSION_INFO, *PDFS_SUPPORTED_NAMESPACE_VERSION_INFO;
+
+typedef struct _DFS_INFO_1
+{
+ [string] WCHAR *EntryPath;
+} DFS_INFO_1;
+
+typedef struct _DFS_INFO_2
+{
+ [string] WCHAR *EntryPath;
+ [string] WCHAR *Comment;
+ DWORD State;
+ DWORD NumberOfStorages;
+} DFS_INFO_2;
+
+typedef struct _DFS_INFO_3
+{
+ [string] WCHAR *EntryPath;
+ [string] WCHAR *Comment;
+ DWORD State;
+ DWORD NumberOfStorages;
+ [size_is(NumberOfStorages)] DFS_STORAGE_INFO *Storage;
+} DFS_INFO_3;
+
+typedef struct _DFS_INFO_4
+{
+ [string] WCHAR *EntryPath;
+ [string] WCHAR *Comment;
+ DWORD State;
+ unsigned long Timeout;
+ GUID Guid;
+ DWORD NumberOfStorages;
+ [size_is(NumberOfStorages)] DFS_STORAGE_INFO *Storage;
+} DFS_INFO_4;
+
+typedef struct _DFS_INFO_5
+{
+ [string] WCHAR *EntryPath;
+ [string] WCHAR *Comment;
+ DWORD State;
+ unsigned long Timeout;
+ GUID Guid;
+ unsigned long PropertyFlags;
+ unsigned long MetadataSize;
+ DWORD NumberOfStorages;
+} DFS_INFO_5;
+
+typedef struct _DFS_INFO_6
+{
+ [string] WCHAR *EntryPath;
+ [string] WCHAR *Comment;
+ DWORD State;
+ unsigned long Timeout;
+ GUID Guid;
+ unsigned long PropertyFlags;
+ unsigned long MetadataSize;
+ DWORD NumberOfStorages;
+ [size_is(NumberOfStorages)] DFS_STORAGE_INFO_1 *Storage;
+} DFS_INFO_6;
+
+typedef struct _DFS_INFO_7
+{
+ GUID GenerationGuid;
+} DFS_INFO_7;
+
+typedef struct _DFS_INFO_8
+{
+ [string] WCHAR *EntryPath;
+ [string] WCHAR *Comment;
+ DWORD State;
+ unsigned long Timeout; GUID Guid;
+ unsigned long PropertyFlags;
+ unsigned long MetadataSize;
+ ULONG SecurityDescriptorLength;
+ [size_is(SecurityDescriptorLength)] PUCHAR pSecurityDescriptor;
+ DWORD NumberOfStorages;
+} DFS_INFO_8, *LPDFS_INFO_8;
+
+typedef struct _DFS_INFO_9
+{
+ [string] WCHAR *EntryPath;
+ [string] WCHAR *Comment;
+ DWORD State;
+ unsigned long Timeout;
+ GUID Guid;
+ unsigned long PropertyFlags;
+ unsigned long MetadataSize;
+ ULONG SecurityDescriptorLength;
+ [size_is(SecurityDescriptorLength)] PUCHAR pSecurityDescriptor;
+ DWORD NumberOfStorages;
+ [size_is(NumberOfStorages)] LPDFS_STORAGE_INFO_1 Storage;
+} DFS_INFO_9, *LPDFS_INFO_9;
+
+typedef struct _DFS_INFO_50
+{
+ unsigned long NamespaceMajorVersion;
+ unsigned long NamespaceMinorVersion;
+ unsigned __int64 NamespaceCapabilities;
+} DFS_INFO_50;
+
+typedef struct _DFS_INFO_100
+{
+ [string] WCHAR *Comment;
+} DFS_INFO_100;
+
+typedef struct _DFS_INFO_101
+{
+ unsigned long State;
+} DFS_INFO_101;
+
+typedef struct _DFS_INFO_102
+{
+ unsigned long Timeout;
+} DFS_INFO_102;
+
+typedef struct _DFS_INFO_103
+{
+ unsigned long PropertyFlagMask;
+ unsigned long PropertyFlags;
+} DFS_INFO_103;
+
+typedef struct _DFS_INFO_104
+{
+ DFS_TARGET_PRIORITY TargetPriority;
+} DFS_INFO_104;
+
+typedef struct _DFS_INFO_105
+{
+ [string] WCHAR *Comment;
+ DWORD State;
+ unsigned long Timeout;
+ unsigned long PropertyFlagMask;
+ unsigned long PropertyFlags;
+} DFS_INFO_105;
+
+typedef struct _DFS_INFO_106
+{
+ DWORD State;
+ DFS_TARGET_PRIORITY TargetPriority;
+} DFS_INFO_106;
+
+typedef struct _DFS_INFO_107
+{
+ [string] WCHAR *Comment;
+ DWORD State;
+ unsigned long Timeout;
+ unsigned long PropertyFlagMask;
+ unsigned long PropertyFlags;
+ ULONG SecurityDescriptorLength;
+ [size_is(SecurityDescriptorLength)] PUCHAR pSecurityDescriptor;
+} DFS_INFO_107;
+
+typedef struct _DFS_INFO_150
+{
+ ULONG SecurityDescriptorLength;
+ [size_is(SecurityDescriptorLength)] PUCHAR pSecurityDescriptor;
+} DFS_INFO_150;
+
+typedef struct _DFS_INFO_200
+{
+ [string] WCHAR *FtDfsName;
+} DFS_INFO_200;
+
+typedef struct _DFS_INFO_300
+{
+ DWORD Flags;
+ [string] WCHAR *DfsName;
+} DFS_INFO_300;
+
+typedef [switch_type(unsigned long)] union _DFS_INFO_STRUCT
+{
+ [case(1)] DFS_INFO_1 *DfsInfo1;
+ [case(2)] DFS_INFO_2 *DfsInfo2;
+ [case(3)] DFS_INFO_3 *DfsInfo3;
+ [case(4)] DFS_INFO_4 *DfsInfo4;
+ [case(5)] DFS_INFO_5 *DfsInfo5;
+ [case(6)] DFS_INFO_6 *DfsInfo6;
+ [case(7)] DFS_INFO_7 *DfsInfo7;
+ [case(8)] DFS_INFO_8 *DfsInfo8;
+ [case(9)] DFS_INFO_9 *DfsInfo9;
+ [case(50)] DFS_INFO_50 *DfsInfo50;
+ [case(100)] DFS_INFO_100 *DfsInfo100;
+ [case(101)] DFS_INFO_101 *DfsInfo101;
+ [case(102)] DFS_INFO_102 *DfsInfo102;
+ [case(103)] DFS_INFO_103 *DfsInfo103;
+ [case(104)] DFS_INFO_104 *DfsInfo104;
+ [case(105)] DFS_INFO_105 *DfsInfo105;
+ [case(106)] DFS_INFO_106 *DfsInfo106;
+ [case(107)] DFS_INFO_107 *DfsInfo107;
+ [case(150)] DFS_INFO_150 *DfsInfo150;
+ [default];
+} DFS_INFO_STRUCT;
+
+typedef struct _DFS_INFO_1_CONTAINER
+{
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] DFS_INFO_1 *Buffer;
+} DFS_INFO_1_CONTAINER;
+
+typedef struct _DFS_INFO_2_CONTAINER
+{
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] DFS_INFO_2 *Buffer;
+} DFS_INFO_2_CONTAINER;
+
+typedef struct _DFS_INFO_3_CONTAINER
+{
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] DFS_INFO_3 *Buffer;
+} DFS_INFO_3_CONTAINER;
+
+typedef struct _DFS_INFO_4_CONTAINER
+{
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] DFS_INFO_4 *Buffer;
+} DFS_INFO_4_CONTAINER;
+
+typedef struct _DFS_INFO_5_CONTAINER
+{
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] DFS_INFO_5 *Buffer;
+} DFS_INFO_5_CONTAINER;
+
+typedef struct _DFS_INFO_6_CONTAINER
+{
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] DFS_INFO_6 *Buffer;
+} DFS_INFO_6_CONTAINER;
+
+typedef struct _DFS_INFO_8_CONTAINER
+{
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] LPDFS_INFO_8 Buffer;
+} DFS_INFO_8_CONTAINER, *LPDFS_INFO_8_CONTAINER;
+
+typedef struct _DFS_INFO_9_CONTAINER
+{
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] LPDFS_INFO_9 Buffer;
+} DFS_INFO_9_CONTAINER, *LPDFS_INFO_9_CONTAINER;
+
+typedef struct _DFS_INFO_200_CONTAINER
+{
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] DFS_INFO_200 *Buffer;
+} DFS_INFO_200_CONTAINER;
+
+typedef struct _DFS_INFO_300_CONTAINER
+{
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] DFS_INFO_300 *Buffer;
+} DFS_INFO_300_CONTAINER;
+
+typedef struct _DFS_INFO_ENUM_STRUCT
+{
+ DWORD Level;
+ [switch_is(Level)] union
+ {
+ [case(1)] DFS_INFO_1_CONTAINER *DfsInfo1Container;
+ [case(2)] DFS_INFO_2_CONTAINER *DfsInfo2Container;
+ [case(3)] DFS_INFO_3_CONTAINER *DfsInfo3Container;
+ [case(4)] DFS_INFO_4_CONTAINER *DfsInfo4Container;
+ [case(5)] DFS_INFO_5_CONTAINER *DfsInfo5Container;
+ [case(6)] DFS_INFO_6_CONTAINER *DfsInfo6Container;
+ [case(8)] DFS_INFO_8_CONTAINER *DfsInfo8Container;
+ [case(9)] DFS_INFO_9_CONTAINER *DfsInfo9Container;
+ [case(200)] DFS_INFO_200_CONTAINER *DfsInfo200Container;
+ [case(300)] DFS_INFO_300_CONTAINER *DfsInfo300Container;
+ } DfsInfoContainer;
+} DFS_INFO_ENUM_STRUCT;
+
+[
+ uuid(4fc742e0-4a10-11cf-8273-00aa004ae673),
+ version(3.0),
+ pointer_default(unique),
+#ifdef __midl
+ ms_union,
+#endif
+ endpoint("ncacn_np:[\\pipe\\netdfs]")
+#ifndef __midl
+ ,implicit_handle(handle_t hBinding)
+#endif
+]
+interface netdfs
+{
+ /* Function 0 */
+ DWORD
+ __stdcall
+ NetrDfsManagerGetVersion();
+
+ /* Function 1 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsAdd(
+ [in, string] WCHAR *DfsEntryPath,
+ [in, string] WCHAR *ServerName,
+ [in, unique, string] WCHAR *ShareName,
+ [in, unique, string] WCHAR *Comment,
+ [in] DWORD Flags);
+
+ /* Function 2 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsRemove(
+ [in, string] WCHAR *DfsEntryPath,
+ [in, unique, string] WCHAR *ServerName,
+ [in, unique, string] WCHAR *ShareName);
+
+ /* Function 3 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsSetInfo(
+ [in, string] WCHAR * DfsEntryPath,
+ [in, unique, string] WCHAR *ServerName,
+ [in, unique, string] WCHAR *ShareName,
+ [in] DWORD Level,
+ [in, switch_is(Level)] DFS_INFO_STRUCT *DfsInfo);
+
+ /* Function 4 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsGetInfo(
+ [in, string] WCHAR *DfsEntryPath,
+ [in, unique, string] WCHAR *ServerName,
+ [in, unique, string] WCHAR *ShareName,
+ [in] DWORD Level,
+ [out, switch_is(Level)] DFS_INFO_STRUCT *DfsInfo);
+
+ /* Function 5 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsEnum(
+ [in] DWORD Level,
+ [in] DWORD PrefMaxLen,
+ [in, out, unique] DFS_INFO_ENUM_STRUCT *DfsEnum,
+ [in, out, unique] DWORD *ResumeHandle);
+
+ /* Function 6 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsRename(
+ [in, string] WCHAR *DfsEntryPath,
+ [in, string] WCHAR *NewDfsEntryPath,
+ [in] unsigned long Flags);
+
+ /* Function 7 - Not used on wire */
+ void
+ __stdcall
+ NetrDfsMove(void);
+
+ /* Function 8 - Not used on wire */
+ void
+ __stdcall
+ NetrDfsManagerGetConfigInfo(void);
+
+ /* Function 9 - Not used on wire */
+ void
+ __stdcall
+ NetrDfsManagerSendSiteInfo(void);
+
+ /* Function 10 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsAddFtRoot(
+ [in, string] WCHAR *ServerName,
+ [in, string] WCHAR *DcName,
+ [in, string] WCHAR *RootShare,
+ [in, string] WCHAR *FtDfsName,
+ [in, string] WCHAR *Comment,
+ [in, string] WCHAR *ConfigDN,
+ [in] BOOLEAN NewFtDfs,
+ [in] DWORD ApiFlags,
+ [in, out, unique] DFSM_ROOT_LIST **ppRootList);
+
+ /* Function 11 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsRemoveFtRoot(
+ [in, string] WCHAR *ServerName,
+ [in, string] WCHAR *DcName,
+ [in, string] WCHAR *RootShare,
+ [in, string] WCHAR *FtDfsName,
+ [in] DWORD ApiFlags,
+ [in, out, unique] DFSM_ROOT_LIST **ppRootList);
+
+ /* Function 12 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsAddStdRoot(
+ [in, string] WCHAR *ServerName,
+ [in, string] WCHAR *RootShare,
+ [in, string] WCHAR *Comment,
+ [in] DWORD ApiFlags);
+
+ /* Function 13 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsRemoveStdRoot(
+ [in, string] WCHAR *ServerName,
+ [in, string] WCHAR *RootShare,
+ [in] DWORD ApiFlags);
+
+ /* Function 14 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsManagerInitialize(
+ [in, string] WCHAR *ServerName,
+ [in] DWORD Flags);
+
+ /* Function 15 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsAddStdRootForced(
+ [in, string] WCHAR *ServerName,
+ [in, string] WCHAR *RootShare,
+ [in, string] WCHAR *Comment,
+ [in, string] WCHAR *Share);
+
+ /* Function 16 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsGetDcAddress(
+ [in, string] WCHAR *ServerName,
+ [in, out, string] WCHAR **DcName,
+ [in, out] BOOLEAN *IsRoot,
+ [in, out] unsigned long *Timeout);
+
+ /* Function 17 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsSetDcAddress(
+ [in, string] WCHAR *ServerName,
+ [in, string] WCHAR *DcName,
+ [in] DWORD Timeout,
+ [in] DWORD Flags);
+
+ /* Function 18 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsFlushFtTable(
+ [in, string] WCHAR *DcName,
+ [in, string] WCHAR *wszFtDfsName);
+
+ /* Function 19 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsAdd2(
+ [in, string] WCHAR *DfsEntryPath,
+ [in, string] WCHAR *DcName,
+ [in, string] WCHAR *ServerName,
+ [in, unique, string] WCHAR *ShareName,
+ [in, unique, string] WCHAR *Comment,
+ [in] DWORD Flags,
+ [in, out, unique] DFSM_ROOT_LIST **ppRootList);
+
+ /* Function 20 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsRemove2(
+ [in, string] WCHAR *DfsEntryPath,
+ [in, string] WCHAR *DcName,
+ [in, unique, string] WCHAR *ServerName,
+ [in, unique, string] WCHAR *ShareName,
+ [in, out, unique] DFSM_ROOT_LIST **ppRootList);
+
+ /* Function 21 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsEnumEx(
+ [in, string] WCHAR *DfsEntryPath,
+ [in] DWORD Level,
+ [in] DWORD PrefMaxLen,
+ [in, out, unique] DFS_INFO_ENUM_STRUCT *DfsEnum,
+ [in, out, unique] DWORD *ResumeHandle);
+
+ /* Function 22 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsSetInfo2(
+ [in, string] WCHAR *DfsEntryPath,
+ [in, string] WCHAR *DcName,
+ [in, unique, string] WCHAR *ServerName,
+ [in, unique, string] WCHAR *ShareName,
+ [in] DWORD Level,
+ [in, switch_is(Level)] DFS_INFO_STRUCT *pDfsInfo,
+ [in, out, unique] DFSM_ROOT_LIST **ppRootList);
+
+ /* Function 23 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsAddRootTarget(
+ [in, unique, string] LPWSTR pDfsPath,
+ [in, unique, string] LPWSTR pTargetPath,
+ [in] ULONG MajorVersion,
+ [in, unique, string] LPWSTR pComment,
+ [in] BOOLEAN NewNamespace, [in] ULONG Flags);
+
+ /* Function 24 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsRemoveRootTarget(
+ [in, unique, string] LPWSTR pDfsPath,
+ [in, unique, string] LPWSTR pTargetPath,
+ [in] ULONG Flags);
+
+ /* Function 25 */
+ NET_API_STATUS
+ __stdcall
+ NetrDfsGetSupportedNamespaceVersion(
+ [in] DFS_NAMESPACE_VERSION_ORIGIN Origin,
+ [in, unique, string] NETDFS_SERVER_OR_DOMAIN_HANDLE pName,
+ [out] PDFS_SUPPORTED_NAMESPACE_VERSION_INFO pVersionInfo);
+}