blob: 81a665be55694e0a4f6a41b0543c7a6da7753503 [file] [log] [blame]
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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;