summaryrefslogtreecommitdiffstats
path: root/private/net/svcdlls/dfs/netdfs.idl
blob: 9e14baf5f28e279da92f1c682e1404fbbdf12790 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/*++

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);

}