1use shared::lmcons::{NET_API_STATUS, PARMNUM_BASE_INFOLEVEL};
8use shared::minwindef::{DWORD, LPBYTE, LPDWORD};
9use um::winnt::{LPCWSTR, LPWSTR};
10pub const REPL_ROLE_EXPORT: DWORD = 1;
11pub const REPL_ROLE_IMPORT: DWORD = 2;
12pub const REPL_ROLE_BOTH: DWORD = 3;
13pub const REPL_INTERVAL_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 0;
14pub const REPL_PULSE_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 1;
15pub const REPL_GUARDTIME_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 2;
16pub const REPL_RANDOM_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 3;
17STRUCT!{struct REPL_INFO_0 {
18 rp0_role: DWORD,
19 rp0_exportpath: LPWSTR,
20 rp0_exportlist: LPWSTR,
21 rp0_importpath: LPWSTR,
22 rp0_importlist: LPWSTR,
23 rp0_logonusername: LPWSTR,
24 rp0_interval: DWORD,
25 rp0_pulse: DWORD,
26 rp0_guardtime: DWORD,
27 rp0_random: DWORD,
28}}
29pub type PREPL_INFO_0 = *mut REPL_INFO_0;
30pub type LPREPL_INFO_0 = *mut REPL_INFO_0;
31STRUCT!{struct REPL_INFO_1000 {
32 rp1000_interval: DWORD,
33}}
34pub type PREPL_INFO_1000 = *mut REPL_INFO_1000;
35pub type LPREPL_INFO_1000 = *mut REPL_INFO_1000;
36STRUCT!{struct REPL_INFO_1001 {
37 rp1001_pulse: DWORD,
38}}
39pub type PREPL_INFO_1001 = *mut REPL_INFO_1001;
40pub type LPREPL_INFO_1001 = *mut REPL_INFO_1001;
41STRUCT!{struct REPL_INFO_1002 {
42 rp1002_guardtime: DWORD,
43}}
44pub type PREPL_INFO_1002 = *mut REPL_INFO_1002;
45pub type LPREPL_INFO_1002 = *mut REPL_INFO_1002;
46STRUCT!{struct REPL_INFO_1003 {
47 rp1003_random: DWORD,
48}}
49pub type PREPL_INFO_1003 = *mut REPL_INFO_1003;
50pub type LPREPL_INFO_1003 = *mut REPL_INFO_1003;
51extern "system" {
52 pub fn NetReplGetInfo(
53 servername: LPCWSTR,
54 level: DWORD,
55 bufptr: *mut LPBYTE,
56 ) -> NET_API_STATUS;
57 pub fn NetReplSetInfo(
58 servername: LPCWSTR,
59 level: DWORD,
60 buf: LPBYTE,
61 parm_err: LPDWORD,
62 ) -> NET_API_STATUS;
63}
64pub const REPL_INTEGRITY_FILE: DWORD = 1;
65pub const REPL_INTEGRITY_TREE: DWORD = 2;
66pub const REPL_EXTENT_FILE: DWORD = 1;
67pub const REPL_EXTENT_TREE: DWORD = 2;
68pub const REPL_EXPORT_INTEGRITY_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 0;
69pub const REPL_EXPORT_EXTENT_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 1;
70STRUCT!{struct REPL_EDIR_INFO_0 {
71 rped0_dirname: LPWSTR,
72}}
73pub type PREPL_EDIR_INFO_0 = *mut REPL_EDIR_INFO_0;
74pub type LPREPL_EDIR_INFO_0 = *mut REPL_EDIR_INFO_0;
75STRUCT!{struct REPL_EDIR_INFO_1 {
76 rped1_dirname: LPWSTR,
77 rped1_integrity: DWORD,
78 rped1_extent: DWORD,
79}}
80pub type PREPL_EDIR_INFO_1 = *mut REPL_EDIR_INFO_1;
81pub type LPREPL_EDIR_INFO_1 = *mut REPL_EDIR_INFO_1;
82STRUCT!{struct REPL_EDIR_INFO_2 {
83 rped2_dirname: LPWSTR,
84 rped2_integrity: DWORD,
85 rped2_extent: DWORD,
86 rped2_lockcount: DWORD,
87 rped2_locktime: DWORD,
88}}
89pub type PREPL_EDIR_INFO_2 = *mut REPL_EDIR_INFO_2;
90pub type LPREPL_EDIR_INFO_2 = *mut REPL_EDIR_INFO_2;
91STRUCT!{struct REPL_EDIR_INFO_1000 {
92 rped1000_integrity: DWORD,
93}}
94pub type PREPL_EDIR_INFO_1000 = *mut REPL_EDIR_INFO_1000;
95pub type LPREPL_EDIR_INFO_1000 = *mut REPL_EDIR_INFO_1000;
96STRUCT!{struct REPL_EDIR_INFO_1001 {
97 rped1001_extent: DWORD,
98}}
99pub type PREPL_EDIR_INFO_1001 = *mut REPL_EDIR_INFO_1001;
100pub type LPREPL_EDIR_INFO_1001 = *mut REPL_EDIR_INFO_1001;
101extern "system" {
102 pub fn NetReplExportDirAdd(
103 servername: LPCWSTR,
104 level: DWORD,
105 buf: LPBYTE,
106 parm_err: LPDWORD,
107 ) -> NET_API_STATUS;
108 pub fn NetReplExportDirDel(
109 servername: LPCWSTR,
110 dirname: LPCWSTR,
111 ) -> NET_API_STATUS;
112 pub fn NetReplExportDirEnum(
113 servername: LPCWSTR,
114 level: DWORD,
115 bufptr: *mut LPBYTE,
116 prefmaxlen: DWORD,
117 entriesread: LPDWORD,
118 totalentries: LPDWORD,
119 resumehandle: LPDWORD,
120 ) -> NET_API_STATUS;
121 pub fn NetReplExportDirGetInfo(
122 servername: LPCWSTR,
123 dirname: LPCWSTR,
124 level: DWORD,
125 bufptr: *mut LPBYTE,
126 ) -> NET_API_STATUS;
127 pub fn NetReplExportDirSetInfo(
128 servername: LPCWSTR,
129 dirname: LPCWSTR,
130 level: DWORD,
131 buf: LPBYTE,
132 parm_err: LPDWORD,
133 ) -> NET_API_STATUS;
134 pub fn NetReplExportDirLock(
135 servername: LPCWSTR,
136 dirname: LPCWSTR,
137 ) -> NET_API_STATUS;
138 pub fn NetReplExportDirUnlock(
139 servername: LPCWSTR,
140 dirname: LPCWSTR,
141 unlockforce: DWORD,
142 ) -> NET_API_STATUS;
143}
144pub const REPL_UNLOCK_NOFORCE: DWORD = 0;
145pub const REPL_UNLOCK_FORCE: DWORD = 1;
146STRUCT!{struct REPL_IDIR_INFO_0 {
147 rpid0_dirname: LPWSTR,
148}}
149pub type PREPL_IDIR_INFO_0 = *mut REPL_IDIR_INFO_0;
150pub type LPREPL_IDIR_INFO_0 = *mut REPL_IDIR_INFO_0;
151STRUCT!{struct REPL_IDIR_INFO_1 {
152 rpid1_dirname: LPWSTR,
153 rpid1_state: DWORD,
154 rpid1_mastername: LPWSTR,
155 rpid1_last_update_time: DWORD,
156 rpid1_lockcount: DWORD,
157 rpid1_locktime: DWORD,
158}}
159pub type PREPL_IDIR_INFO_1 = *mut REPL_IDIR_INFO_1;
160pub type LPREPL_IDIR_INFO_1 = *mut REPL_IDIR_INFO_1;
161extern "system" {
162 pub fn NetReplImportDirAdd(
163 servername: LPCWSTR,
164 level: DWORD,
165 buf: LPBYTE,
166 parm_err: LPDWORD,
167 ) -> NET_API_STATUS;
168 pub fn NetReplImportDirDel(
169 servername: LPCWSTR,
170 dirname: LPCWSTR,
171 ) -> NET_API_STATUS;
172 pub fn NetReplImportDirEnum(
173 servername: LPCWSTR,
174 level: DWORD,
175 bufptr: *mut LPBYTE,
176 prefmaxlen: DWORD,
177 entriesread: LPDWORD,
178 totalentries: LPDWORD,
179 resumehandle: LPDWORD,
180 ) -> NET_API_STATUS;
181 pub fn NetReplImportDirGetInfo(
182 servername: LPCWSTR,
183 dirname: LPCWSTR,
184 level: DWORD,
185 bufptr: *mut LPBYTE,
186 ) -> NET_API_STATUS;
187 pub fn NetReplImportDirLock(
188 servername: LPCWSTR,
189 dirname: LPCWSTR,
190 ) -> NET_API_STATUS;
191 pub fn NetReplImportDirUnlock(
192 servername: LPCWSTR,
193 dirname: LPCWSTR,
194 unlockforce: DWORD,
195 ) -> NET_API_STATUS;
196}
197pub const REPL_STATE_OK: DWORD = 0;
198pub const REPL_STATE_NO_MASTER: DWORD = 1;
199pub const REPL_STATE_NO_SYNC: DWORD = 2;
200pub const REPL_STATE_NEVER_REPLICATED: DWORD = 3;