201 lines
6.3 KiB
Rust
201 lines
6.3 KiB
Rust
// 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;
|