1 | #include "idl_types.h"
|
---|
2 |
|
---|
3 | import "misc.idl";
|
---|
4 |
|
---|
5 | [
|
---|
6 | uuid("897e2e5f-93f3-4376-9c9c-fd2277495c27"),
|
---|
7 | version(1.0),
|
---|
8 | endpoint("ncacn_ip_tcp:", "ncalrpc:"),
|
---|
9 | helpstring("File Replication Service DFS-R"),
|
---|
10 | pointer_default(unique)
|
---|
11 | ]
|
---|
12 | interface frstrans
|
---|
13 | {
|
---|
14 | /*****************/
|
---|
15 | /* Function 0x00 */
|
---|
16 | WERROR frstrans_CheckConnectivity(
|
---|
17 | [in] GUID replica_set_guid,
|
---|
18 | [in] GUID connection_guid
|
---|
19 | );
|
---|
20 |
|
---|
21 | /*****************/
|
---|
22 | /* Function 0x01 */
|
---|
23 | typedef [v1_enum,flag(NDR_PAHEX)] enum {
|
---|
24 | FRSTRANS_PROTOCOL_VERSION_W2K3R2 = 0x00050000,
|
---|
25 | FRSTRANS_PROTOCOL_VERSION_LONGHORN_SERVER = 0x00050002
|
---|
26 | } frstrans_ProtocolVersion;
|
---|
27 |
|
---|
28 | typedef [bitmap32bit] bitmap {
|
---|
29 | FRSTRANS_TRANSPORT_SUPPORTS_RDC_SIMILARITY = 0x00000001
|
---|
30 | } frstrans_TransportFlags;
|
---|
31 |
|
---|
32 | WERROR frstrans_EstablishConnection(
|
---|
33 | [in] GUID replica_set_guid,
|
---|
34 | [in] GUID connection_guid,
|
---|
35 | [in] frstrans_ProtocolVersion downstream_protocol_version,
|
---|
36 | [in] frstrans_TransportFlags downstream_flags,
|
---|
37 | [out,ref] frstrans_ProtocolVersion *upstream_protocol_version,
|
---|
38 | [out,ref] frstrans_TransportFlags *upstream_flags
|
---|
39 | );
|
---|
40 |
|
---|
41 | /*****************/
|
---|
42 | /* Function 0x02 */
|
---|
43 | WERROR frstrans_EstablishSession(
|
---|
44 | [in] GUID connection_guid,
|
---|
45 | [in] GUID content_set_guid
|
---|
46 | );
|
---|
47 |
|
---|
48 | /*****************/
|
---|
49 | /* Function 0x03 */
|
---|
50 | typedef enum {
|
---|
51 | FRSTRANS_UPDATE_REQUEST_ALL = 0x0000,
|
---|
52 | FRSTRANS_UPDATE_REQUEST_TOMBSTONES = 0x0001,
|
---|
53 | FRSTRANS_UPDATE_REQUEST_LIVE = 0x0002
|
---|
54 | } frstrans_UpdateRequestType;
|
---|
55 |
|
---|
56 | typedef enum {
|
---|
57 | FRSTRANS_UPDATE_STATUS_DONE = 0x0002,
|
---|
58 | FRSTRANS_UPDATE_STATUS_MORE = 0x0003
|
---|
59 | } frstrans_UpdateStatus;
|
---|
60 |
|
---|
61 | typedef struct {
|
---|
62 | GUID db_guid;
|
---|
63 | hyper low;
|
---|
64 | hyper high;
|
---|
65 | } frstrans_VersionVector;
|
---|
66 |
|
---|
67 | typedef [flag(NDR_PAHEX)] struct {
|
---|
68 | boolean32 present;
|
---|
69 | boolean32 name_conflict;
|
---|
70 | uint32 attributes;
|
---|
71 | NTTIME fence;
|
---|
72 | NTTIME clock;
|
---|
73 | NTTIME create_time;
|
---|
74 | GUID content_set_guid;
|
---|
75 | uint8 sha1_hash[20];
|
---|
76 | uint8 rdc_similarity[16];
|
---|
77 | GUID uid_db_guid;
|
---|
78 | hyper uid_version;
|
---|
79 | GUID gsvn_db_guid;
|
---|
80 | hyper gsvn_version;
|
---|
81 | GUID parent_db_guid;
|
---|
82 | hyper parent_version;
|
---|
83 | [string,charset(UTF16)] uint16 name[261];
|
---|
84 | uint32 flags;
|
---|
85 | } frstrans_Update;
|
---|
86 |
|
---|
87 | WERROR frstrans_RequestUpdates(
|
---|
88 | [in] GUID connection_guid,
|
---|
89 | [in] GUID content_set_guid,
|
---|
90 | [in,range(0,256)] uint32 credits_available,
|
---|
91 | [in,range(0,1)] boolean32 hash_requested,
|
---|
92 | [in,range(0,2)]
|
---|
93 | frstrans_UpdateRequestType update_request_type,
|
---|
94 | [in] uint32 version_vector_diff_count,
|
---|
95 | [in,size_is(version_vector_diff_count)]
|
---|
96 | frstrans_VersionVector *version_vector_diff,
|
---|
97 | [out,ref,size_is(credits_available),length_is(*update_count)]
|
---|
98 | frstrans_Update *frs_update,
|
---|
99 | [out,ref] uint32 *update_count,
|
---|
100 | [out,ref] frstrans_UpdateStatus *update_status,
|
---|
101 | [out,ref] GUID *gvsn_db_guid,
|
---|
102 | [out,ref] hyper *gvsn_version
|
---|
103 | );
|
---|
104 |
|
---|
105 | /*****************/
|
---|
106 | /* Function 0x04 */
|
---|
107 | typedef enum {
|
---|
108 | FRSTRANS_VERSION_REQUEST_NORNAL_SYNC = 0x0000,
|
---|
109 | FRSTRANS_VERSION_REQUEST_SLOW_SYNC = 0x0001,
|
---|
110 | FRSTRANS_VERSION_REQUEST_SLAVE_SYNC = 0x0002
|
---|
111 | } frstrans_VersionRequestType;
|
---|
112 |
|
---|
113 | typedef enum {
|
---|
114 | FRSTRANS_VERSION_CHANGE_NOTIFY = 0x0000,
|
---|
115 | FRSTRANS_VERSION_CHANGE_ALL = 0x0002
|
---|
116 | } frstrans_VersionChangeType;
|
---|
117 |
|
---|
118 | WERROR frstrans_RequestVersionVector(
|
---|
119 | [in] uint32 sequence_number,
|
---|
120 | [in] GUID connection_guid,
|
---|
121 | [in] GUID content_set_guid,
|
---|
122 | [in,range(0,2)] frstrans_VersionRequestType request_type,
|
---|
123 | [in,range(0,2)] frstrans_VersionChangeType change_type,
|
---|
124 | [in] hyper vv_generation
|
---|
125 | );
|
---|
126 |
|
---|
127 | /*****************/
|
---|
128 | /* Function 0x05 */
|
---|
129 | typedef struct {
|
---|
130 | GUID machine_guid;
|
---|
131 | uint32 year;
|
---|
132 | uint32 month;
|
---|
133 | uint32 day_of_week;
|
---|
134 | uint32 day;
|
---|
135 | uint32 hour;
|
---|
136 | uint32 minute;
|
---|
137 | uint32 second;
|
---|
138 | uint32 milli_seconds;
|
---|
139 | } frstrans_EpoqueVector;
|
---|
140 |
|
---|
141 | typedef struct {
|
---|
142 | hyper vv_generation;
|
---|
143 | uint32 version_vector_count;
|
---|
144 | [size_is(version_vector_count)]
|
---|
145 | frstrans_VersionVector *version_vector;
|
---|
146 | uint32 epoque_vector_count;
|
---|
147 | [size_is(epoque_vector_count)]
|
---|
148 | frstrans_EpoqueVector *epoque_vector;
|
---|
149 | } frstrans_AsyncVersionVectorResponse;
|
---|
150 |
|
---|
151 | typedef struct {
|
---|
152 | uint32 sequence_number;
|
---|
153 | WERROR status;
|
---|
154 | frstrans_AsyncVersionVectorResponse response;
|
---|
155 | } frstrans_AsyncResponseContext;
|
---|
156 |
|
---|
157 | WERROR frstrans_AsyncPoll(
|
---|
158 | [in] GUID connection_guid,
|
---|
159 | [out,ref] frstrans_AsyncResponseContext *response
|
---|
160 | );
|
---|
161 |
|
---|
162 | /*****************/
|
---|
163 | /* Function 0x06 */
|
---|
164 | [todo] void FRSTRANS_REQUEST_RECORDS();
|
---|
165 |
|
---|
166 | /*****************/
|
---|
167 | /* Function 0x07 */
|
---|
168 | [todo] void FRSTRANS_UPDATE_CANCEL();
|
---|
169 |
|
---|
170 | /*****************/
|
---|
171 | /* Function 0x08 */
|
---|
172 | [todo] void FRSTRANS_RAW_GET_FILE_DATA();
|
---|
173 |
|
---|
174 | /*****************/
|
---|
175 | /* Function 0x09 */
|
---|
176 | [todo] void FRSTRANS_RDC_GET_SIGNATURES();
|
---|
177 |
|
---|
178 | /*****************/
|
---|
179 | /* Function 0x0a */
|
---|
180 | [todo] void FRSTRANS_RDC_PUSH_SOURCE_NEEDS();
|
---|
181 |
|
---|
182 | /*****************/
|
---|
183 | /* Function 0x0b */
|
---|
184 | [todo] void FRSTRANS_RDC_GET_FILE_DATA();
|
---|
185 |
|
---|
186 | /*****************/
|
---|
187 | /* Function 0x0c */
|
---|
188 | [todo] void FRSTRANS_RDC_CLOSE();
|
---|
189 |
|
---|
190 | /*****************/
|
---|
191 | /* Function 0x0d */
|
---|
192 | typedef enum {
|
---|
193 | FRSTRANS_STAGING_POLICY_SERVER_DEFAULTY = 0x0000,
|
---|
194 | FRSTRANS_STAGING_POLICY_STATGING_REQUIRED = 0x0001,
|
---|
195 | FRSTRANS_STAGING_POLICY_RESTATGING_REQUIRED = 0x0002
|
---|
196 | } frstrans_RequestedStagingPolicy;
|
---|
197 |
|
---|
198 | typedef enum {
|
---|
199 | FRSTRANS_RDC_FILTER_GENERIC = 0x0000,
|
---|
200 | FRSTRANS_RDC_FILTER_MAX = 0x0001,
|
---|
201 | FRSTRANS_RDC_FILTER_POINT = 0x0002,
|
---|
202 | FRSTRANS_RDC_MAX_ALGORITHM = 0x0003
|
---|
203 | } frstrans_RdcChunckerAlgorithm;
|
---|
204 |
|
---|
205 | typedef struct {
|
---|
206 | frstrans_RdcChunckerAlgorithm chunker_type;
|
---|
207 | uint8 chunker_parameters[64];
|
---|
208 | } frstrans_RdcParameterGeneric;
|
---|
209 |
|
---|
210 | typedef struct {
|
---|
211 | [range(128,1024*16)] uint16 min_horizon_size;
|
---|
212 | [range(2,96)] uint16 max_window_size;
|
---|
213 | } frstrans_RdcParameterFilterMax;
|
---|
214 |
|
---|
215 | typedef struct {
|
---|
216 | uint16 min_chunk_size;
|
---|
217 | uint16 max_chunk_size;
|
---|
218 | } frstrans_RdcParameterFilterPoint;
|
---|
219 |
|
---|
220 | typedef [switch_type(frstrans_RdcChunckerAlgorithm)] union {
|
---|
221 | [case(FRSTRANS_RDC_FILTER_GENERIC)]
|
---|
222 | frstrans_RdcParameterGeneric filter_generic;
|
---|
223 | [case(FRSTRANS_RDC_FILTER_MAX)]
|
---|
224 | frstrans_RdcParameterFilterMax filter_max;
|
---|
225 | [case(FRSTRANS_RDC_FILTER_POINT)]
|
---|
226 | frstrans_RdcParameterFilterPoint filter_point;
|
---|
227 | } frstrans_RdcParameterUnion;
|
---|
228 |
|
---|
229 | typedef struct {
|
---|
230 | frstrans_RdcChunckerAlgorithm rdc_chunker_algorithm;
|
---|
231 | [switch_is(rdc_chunker_algorithm)] frstrans_RdcParameterUnion u;
|
---|
232 | } frstrans_RdcParameters;
|
---|
233 |
|
---|
234 | typedef enum {
|
---|
235 | FRSTRANS_RDC_VERSION = 0x0001
|
---|
236 | } frstrans_RdcVersion;
|
---|
237 |
|
---|
238 | typedef enum {
|
---|
239 | FRSTRANS_RDC_VERSION_COMPATIBLE = 0x0001
|
---|
240 | } frstrans_RdcVersionCompatible;
|
---|
241 |
|
---|
242 | typedef enum {
|
---|
243 | FRSTRANS_RDC_UNCOMPRESSED = 0x0000,
|
---|
244 | FRSTRANS_RDC_XPRESS = 0x0001
|
---|
245 | } frstrans_RdcCompressionAlgorithm;
|
---|
246 |
|
---|
247 | typedef struct {
|
---|
248 | hyper on_disk_file_size;
|
---|
249 | hyper file_size_estimate;
|
---|
250 | frstrans_RdcVersion rdc_version;
|
---|
251 | frstrans_RdcVersionCompatible rdc_minimum_compatible_version;
|
---|
252 | [range(0,8)] uint8 rdc_signature_levels;
|
---|
253 | frstrans_RdcCompressionAlgorithm compression_algorithm;
|
---|
254 | [size_is(rdc_signature_levels)]
|
---|
255 | frstrans_RdcParameters rdc_filter_parameters[*];
|
---|
256 | } frstrans_RdcFileInfo;
|
---|
257 |
|
---|
258 | WERROR frstrans_InitializeFileTransferAsync(
|
---|
259 | [in] GUID connection_guid,
|
---|
260 | [in,out,ref] frstrans_Update *frs_update,
|
---|
261 | [in,range(0,1)] boolean32 rdc_desired,
|
---|
262 | [in,out,ref] frstrans_RequestedStagingPolicy *staging_policy,
|
---|
263 | [out,ref] policy_handle *server_context,
|
---|
264 | [out,ref] frstrans_RdcFileInfo **rdc_file_info,
|
---|
265 | [out,ref,size_is(buffer_size),length_is(*size_read)]
|
---|
266 | uint8 *data_buffer,
|
---|
267 | [in,range(0,262144)] uint32 buffer_size,
|
---|
268 | [out,ref] uint32 *size_read,
|
---|
269 | [out,ref] boolean32 *is_end_of_file
|
---|
270 | );
|
---|
271 |
|
---|
272 | /*****************/
|
---|
273 | /* Function 0x0e */
|
---|
274 | [todo] void FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE();
|
---|
275 |
|
---|
276 | /* The following functions are new in Windows 2008 */
|
---|
277 |
|
---|
278 | /*****************/
|
---|
279 | /* Function 0x0f */
|
---|
280 | [todo] void FRSTRANS_RAW_GET_FILE_DATA_ASYNC();
|
---|
281 |
|
---|
282 | /*****************/
|
---|
283 | /* Function 0x10 */
|
---|
284 | [todo] void FRSTRANS_RDC_GET_FILE_DATA_ASYNC();
|
---|
285 | }
|
---|