// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. //! This file contains structures, function prototypes, and definitions for the replicator APIs use shared::lmcons::{NET_API_STATUS, PARMNUM_BASE_INFOLEVEL}; use shared::minwindef::{DWORD, LPBYTE, LPDWORD}; use um::winnt::{LPCWSTR, LPWSTR}; pub const REPL_ROLE_EXPORT: DWORD = 1; pub const REPL_ROLE_IMPORT: DWORD = 2; pub const REPL_ROLE_BOTH: DWORD = 3; pub const REPL_INTERVAL_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 0; pub const REPL_PULSE_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 1; pub const REPL_GUARDTIME_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 2; pub const REPL_RANDOM_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 3; STRUCT!{struct REPL_INFO_0 { rp0_role: DWORD, rp0_exportpath: LPWSTR, rp0_exportlist: LPWSTR, rp0_importpath: LPWSTR, rp0_importlist: LPWSTR, rp0_logonusername: LPWSTR, rp0_interval: DWORD, rp0_pulse: DWORD, rp0_guardtime: DWORD, rp0_random: DWORD, }} pub type PREPL_INFO_0 = *mut REPL_INFO_0; pub type LPREPL_INFO_0 = *mut REPL_INFO_0; STRUCT!{struct REPL_INFO_1000 { rp1000_interval: DWORD, }} pub type PREPL_INFO_1000 = *mut REPL_INFO_1000; pub type LPREPL_INFO_1000 = *mut REPL_INFO_1000; STRUCT!{struct REPL_INFO_1001 { rp1001_pulse: DWORD, }} pub type PREPL_INFO_1001 = *mut REPL_INFO_1001; pub type LPREPL_INFO_1001 = *mut REPL_INFO_1001; STRUCT!{struct REPL_INFO_1002 { rp1002_guardtime: DWORD, }} pub type PREPL_INFO_1002 = *mut REPL_INFO_1002; pub type LPREPL_INFO_1002 = *mut REPL_INFO_1002; STRUCT!{struct REPL_INFO_1003 { rp1003_random: DWORD, }} pub type PREPL_INFO_1003 = *mut REPL_INFO_1003; pub type LPREPL_INFO_1003 = *mut REPL_INFO_1003; extern "system" { pub fn NetReplGetInfo( servername: LPCWSTR, level: DWORD, bufptr: *mut LPBYTE, ) -> NET_API_STATUS; pub fn NetReplSetInfo( servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD, ) -> NET_API_STATUS; } pub const REPL_INTEGRITY_FILE: DWORD = 1; pub const REPL_INTEGRITY_TREE: DWORD = 2; pub const REPL_EXTENT_FILE: DWORD = 1; pub const REPL_EXTENT_TREE: DWORD = 2; pub const REPL_EXPORT_INTEGRITY_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 0; pub const REPL_EXPORT_EXTENT_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + 1; STRUCT!{struct REPL_EDIR_INFO_0 { rped0_dirname: LPWSTR, }} pub type PREPL_EDIR_INFO_0 = *mut REPL_EDIR_INFO_0; pub type LPREPL_EDIR_INFO_0 = *mut REPL_EDIR_INFO_0; STRUCT!{struct REPL_EDIR_INFO_1 { rped1_dirname: LPWSTR, rped1_integrity: DWORD, rped1_extent: DWORD, }} pub type PREPL_EDIR_INFO_1 = *mut REPL_EDIR_INFO_1; pub type LPREPL_EDIR_INFO_1 = *mut REPL_EDIR_INFO_1; STRUCT!{struct REPL_EDIR_INFO_2 { rped2_dirname: LPWSTR, rped2_integrity: DWORD, rped2_extent: DWORD, rped2_lockcount: DWORD, rped2_locktime: DWORD, }} pub type PREPL_EDIR_INFO_2 = *mut REPL_EDIR_INFO_2; pub type LPREPL_EDIR_INFO_2 = *mut REPL_EDIR_INFO_2; STRUCT!{struct REPL_EDIR_INFO_1000 { rped1000_integrity: DWORD, }} pub type PREPL_EDIR_INFO_1000 = *mut REPL_EDIR_INFO_1000; pub type LPREPL_EDIR_INFO_1000 = *mut REPL_EDIR_INFO_1000; STRUCT!{struct REPL_EDIR_INFO_1001 { rped1001_extent: DWORD, }} pub type PREPL_EDIR_INFO_1001 = *mut REPL_EDIR_INFO_1001; pub type LPREPL_EDIR_INFO_1001 = *mut REPL_EDIR_INFO_1001; extern "system" { pub fn NetReplExportDirAdd( servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD, ) -> NET_API_STATUS; pub fn NetReplExportDirDel( servername: LPCWSTR, dirname: LPCWSTR, ) -> NET_API_STATUS; pub fn NetReplExportDirEnum( servername: LPCWSTR, level: DWORD, bufptr: *mut LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resumehandle: LPDWORD, ) -> NET_API_STATUS; pub fn NetReplExportDirGetInfo( servername: LPCWSTR, dirname: LPCWSTR, level: DWORD, bufptr: *mut LPBYTE, ) -> NET_API_STATUS; pub fn NetReplExportDirSetInfo( servername: LPCWSTR, dirname: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD, ) -> NET_API_STATUS; pub fn NetReplExportDirLock( servername: LPCWSTR, dirname: LPCWSTR, ) -> NET_API_STATUS; pub fn NetReplExportDirUnlock( servername: LPCWSTR, dirname: LPCWSTR, unlockforce: DWORD, ) -> NET_API_STATUS; } pub const REPL_UNLOCK_NOFORCE: DWORD = 0; pub const REPL_UNLOCK_FORCE: DWORD = 1; STRUCT!{struct REPL_IDIR_INFO_0 { rpid0_dirname: LPWSTR, }} pub type PREPL_IDIR_INFO_0 = *mut REPL_IDIR_INFO_0; pub type LPREPL_IDIR_INFO_0 = *mut REPL_IDIR_INFO_0; STRUCT!{struct REPL_IDIR_INFO_1 { rpid1_dirname: LPWSTR, rpid1_state: DWORD, rpid1_mastername: LPWSTR, rpid1_last_update_time: DWORD, rpid1_lockcount: DWORD, rpid1_locktime: DWORD, }} pub type PREPL_IDIR_INFO_1 = *mut REPL_IDIR_INFO_1; pub type LPREPL_IDIR_INFO_1 = *mut REPL_IDIR_INFO_1; extern "system" { pub fn NetReplImportDirAdd( servername: LPCWSTR, level: DWORD, buf: LPBYTE, parm_err: LPDWORD, ) -> NET_API_STATUS; pub fn NetReplImportDirDel( servername: LPCWSTR, dirname: LPCWSTR, ) -> NET_API_STATUS; pub fn NetReplImportDirEnum( servername: LPCWSTR, level: DWORD, bufptr: *mut LPBYTE, prefmaxlen: DWORD, entriesread: LPDWORD, totalentries: LPDWORD, resumehandle: LPDWORD, ) -> NET_API_STATUS; pub fn NetReplImportDirGetInfo( servername: LPCWSTR, dirname: LPCWSTR, level: DWORD, bufptr: *mut LPBYTE, ) -> NET_API_STATUS; pub fn NetReplImportDirLock( servername: LPCWSTR, dirname: LPCWSTR, ) -> NET_API_STATUS; pub fn NetReplImportDirUnlock( servername: LPCWSTR, dirname: LPCWSTR, unlockforce: DWORD, ) -> NET_API_STATUS; } pub const REPL_STATE_OK: DWORD = 0; pub const REPL_STATE_NO_MASTER: DWORD = 1; pub const REPL_STATE_NO_SYNC: DWORD = 2; pub const REPL_STATE_NEVER_REPLICATED: DWORD = 3;