6 uuid("897e2e5f-93f3-4376-9c9c-fd2277495c27"),
8 endpoint("ncacn_ip_tcp:", "ncalrpc:"),
9 helpstring("File Replication Service DFS-R"),
10 pointer_default(unique)
16 WERROR frstrans_CheckConnectivity
(
17 [in] GUID replica_set_guid
,
18 [in] GUID connection_guid
23 typedef [v1_enum,flag
(NDR_PAHEX
)] enum {
24 FRSTRANS_PROTOCOL_VERSION_W2K3R2
= 0x00050000,
25 FRSTRANS_PROTOCOL_VERSION_LONGHORN_SERVER
= 0x00050002
26 } frstrans_ProtocolVersion
;
28 typedef [bitmap32bit
] bitmap
{
29 FRSTRANS_TRANSPORT_SUPPORTS_RDC_SIMILARITY
= 0x00000001
30 } frstrans_TransportFlags
;
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
43 WERROR frstrans_EstablishSession
(
44 [in] GUID connection_guid
,
45 [in] GUID content_set_guid
51 FRSTRANS_UPDATE_REQUEST_ALL
= 0x0000,
52 FRSTRANS_UPDATE_REQUEST_TOMBSTONES
= 0x0001,
53 FRSTRANS_UPDATE_REQUEST_LIVE
= 0x0002
54 } frstrans_UpdateRequestType
;
57 FRSTRANS_UPDATE_STATUS_DONE
= 0x0002,
58 FRSTRANS_UPDATE_STATUS_MORE
= 0x0003
59 } frstrans_UpdateStatus
;
65 } frstrans_VersionVector
;
67 typedef [flag
(NDR_PAHEX
)] struct {
69 boolean32 name_conflict
;
74 GUID content_set_guid
;
76 uint8 rdc_similarity
[16];
83 [string,charset
(UTF16
)] uint16 name
[261];
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
,
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
108 FRSTRANS_VERSION_REQUEST_NORNAL_SYNC
= 0x0000,
109 FRSTRANS_VERSION_REQUEST_SLOW_SYNC
= 0x0001,
110 FRSTRANS_VERSION_REQUEST_SLAVE_SYNC
= 0x0002
111 } frstrans_VersionRequestType
;
114 FRSTRANS_VERSION_CHANGE_NOTIFY
= 0x0000,
115 FRSTRANS_VERSION_CHANGE_ALL
= 0x0002
116 } frstrans_VersionChangeType
;
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
138 uint32 milli_seconds
;
139 } frstrans_EpoqueVector
;
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
;
152 uint32 sequence_number
;
154 frstrans_AsyncVersionVectorResponse response
;
155 } frstrans_AsyncResponseContext
;
157 WERROR frstrans_AsyncPoll
(
158 [in] GUID connection_guid
,
159 [out,ref] frstrans_AsyncResponseContext
*response
164 [todo
] void FRSTRANS_REQUEST_RECORDS
();
168 [todo
] void FRSTRANS_UPDATE_CANCEL
();
172 [todo
] void FRSTRANS_RAW_GET_FILE_DATA
();
176 [todo
] void FRSTRANS_RDC_GET_SIGNATURES
();
180 [todo
] void FRSTRANS_RDC_PUSH_SOURCE_NEEDS
();
184 [todo
] void FRSTRANS_RDC_GET_FILE_DATA
();
188 [todo
] void FRSTRANS_RDC_CLOSE
();
193 FRSTRANS_STAGING_POLICY_SERVER_DEFAULTY
= 0x0000,
194 FRSTRANS_STAGING_POLICY_STATGING_REQUIRED
= 0x0001,
195 FRSTRANS_STAGING_POLICY_RESTATGING_REQUIRED
= 0x0002
196 } frstrans_RequestedStagingPolicy
;
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
;
206 frstrans_RdcChunckerAlgorithm chunker_type
;
207 uint8 chunker_parameters
[64];
208 } frstrans_RdcParameterGeneric
;
211 [range(128,1024*16)] uint16 min_horizon_size
;
212 [range(2,96)] uint16 max_window_size
;
213 } frstrans_RdcParameterFilterMax
;
216 uint16 min_chunk_size
;
217 uint16 max_chunk_size
;
218 } frstrans_RdcParameterFilterPoint
;
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
;
230 frstrans_RdcChunckerAlgorithm rdc_chunker_algorithm
;
231 [switch_is(rdc_chunker_algorithm
)] frstrans_RdcParameterUnion u
;
232 } frstrans_RdcParameters
;
235 FRSTRANS_RDC_VERSION
= 0x0001
236 } frstrans_RdcVersion
;
239 FRSTRANS_RDC_VERSION_COMPATIBLE
= 0x0001
240 } frstrans_RdcVersionCompatible
;
243 FRSTRANS_RDC_UNCOMPRESSED
= 0x0000,
244 FRSTRANS_RDC_XPRESS
= 0x0001
245 } frstrans_RdcCompressionAlgorithm
;
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
;
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
)]
267 [in,range(0,262144)] uint32 buffer_size
,
268 [out,ref] uint32
*size_read
,
269 [out,ref] boolean32
*is_end_of_file
274 [todo
] void FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE
();
276 /* The following functions are new in Windows 2008 */
280 typedef pipe uint8 frstrans_BytePipe
;
282 WERROR frstrans_RawGetFileDataAsync
(
283 [in,ref] policy_handle
*server_context
,
284 [out,ref] frstrans_BytePipe
*byte_pipe
289 WERROR frstrans_RdcGetFileDataAsync
(
290 [in,ref] policy_handle
*server_context
,
291 [out,ref] frstrans_BytePipe
*byte_pipe