summaryrefslogtreecommitdiffstats
path: root/private/utils/ntbackup/exchange
diff options
context:
space:
mode:
Diffstat (limited to 'private/utils/ntbackup/exchange')
-rw-r--r--private/utils/ntbackup/exchange/build/alphamk.inc195
-rw-r--r--private/utils/ntbackup/exchange/build/coffbase.txt776
-rw-r--r--private/utils/ntbackup/exchange/build/i386mk.inc247
-rw-r--r--private/utils/ntbackup/exchange/build/inc/common.ver96
-rw-r--r--private/utils/ntbackup/exchange/build/inc/ntddscsi.h229
-rw-r--r--private/utils/ntbackup/exchange/build/inc/ntverp.h47
-rw-r--r--private/utils/ntbackup/exchange/build/inc/pcrt32.h39
-rw-r--r--private/utils/ntbackup/exchange/build/inc/plan32.h14
-rw-r--r--private/utils/ntbackup/exchange/build/inc/port1632.h40
-rw-r--r--private/utils/ntbackup/exchange/build/inc/ptypes32.h62
-rw-r--r--private/utils/ntbackup/exchange/build/inc/pwin32.h305
-rw-r--r--private/utils/ntbackup/exchange/build/inc/uiexport.h132
-rw-r--r--private/utils/ntbackup/exchange/build/inc/warning.h22
-rw-r--r--private/utils/ntbackup/exchange/build/makefile.def2047
-rw-r--r--private/utils/ntbackup/exchange/build/makefile.plt142
-rw-r--r--private/utils/ntbackup/exchange/build/mipsmk.inc218
-rw-r--r--private/utils/ntbackup/exchange/build/ppcmk.inc227
-rw-r--r--private/utils/ntbackup/exchange/inc/edbmsg.h1737
-rw-r--r--private/utils/ntbackup/exchange/inc/jet.h1804
-rw-r--r--private/utils/ntbackup/exchange/inc/jetbcli.h407
-rw-r--r--private/utils/ntbackup/exchange/inc/morpc.h352
-rw-r--r--private/utils/ntbackup/exchange/inc/rpcbak.h225
-rw-r--r--private/utils/ntbackup/exchange/inc/rpcpri.h288
-rw-r--r--private/utils/ntbackup/exchange/inc/rpcpub.h387
-rw-r--r--private/utils/ntbackup/exchange/inc/sadapi.h197
-rw-r--r--private/utils/ntbackup/exchange/readme.txt8
26 files changed, 10243 insertions, 0 deletions
diff --git a/private/utils/ntbackup/exchange/build/alphamk.inc b/private/utils/ntbackup/exchange/build/alphamk.inc
new file mode 100644
index 000000000..2498e84ca
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/alphamk.inc
@@ -0,0 +1,195 @@
+!IF 0
+
+Copyright (c) 1994 Microsoft Corporation
+
+Module Name:
+
+ alphamk.inc
+
+Abstract:
+
+ This module contains the ALPHA specific build controls. It is included
+ by makefile.def.
+
+Author:
+
+ Jeff Havens (jhavens) 13-Feb-1994
+
+Revision History:
+
+!ENDIF
+
+#
+# Alpha option control
+#
+
+UMBASE=$(UMBASE:*=alpha)
+UMLIBS=$(UMLIBS:*=alpha)
+NTRES=$(NTRES:*=alpha)
+UMRES=$(UMRES:*=alpha)
+UMOBJS=$(UMOBJS:*=alpha)
+LINKLIBS=$(LINKLIBS:*=alpha)
+DLLBASE=$(DLLBASE:*=alpha)
+DLLDEF=$(DLLDEF:*=alpha)
+MACHINE_TARGETLIBS=$(MACHINE_TARGETLIBS:*=alpha)
+TARGET=$(TARGET:*=alpha)
+DYNLINK_LIB=$(DYNLINK_LIB:*=alpha)
+TARGETEXEFILES=$(TARGETEXEFILES:*=alpha)
+TARGETLIBFILES=$(TARGETLIBFILES:*=alpha)
+TARGETOBJFILES=$(TARGETOBJFILES:*=alpha)
+UMOBJFILES=$(UMOBJFILES:*=alpha)
+UMEXEFILES=$(UMEXEFILES:*=alpha)
+HEADERFILE=$(HEADERFILE:*=alpha)
+HEADEROBJNAME=$(HEADEROBJNAME:*=alpha)
+HEADEROBJ=$(HEADEROBJ:*=alpha)
+PRECOMPILED=$(PRECOMPILED:*=alpha)
+PRECOMPILED_CXX=$(PRECOMPILED_CXX:*=alpha)
+PRECOMPILED_TARGET=$(PRECOMPILED_TARGET:*=alpha)
+
+!ifdef NTTARGETFILES
+NTTARGETFILES=$(NTTARGETFILES:*=alpha)
+!endif
+!ifdef NTTARGETFILE0
+NTTARGETFILE0=$(NTTARGETFILE0:*=alpha)
+!endif
+!ifdef NTTARGETFILE1
+NTTARGETFILE1=$(NTTARGETFILE1:*=alpha)
+!endif
+
+!IF "$(GPSIZE)" != "0"
+
+LIBC_LIB=$(BASEDIR)\public\sdk\lib\alpha\small.lib $(LIBC_LIB)
+LINKGPSIZE=-gpsize:$(GPSIZE)
+
+!ENDIF
+
+ENTRY_SUFFIX=
+GDI_ENTRY_SUFFIX=
+
+!IF "$(MSC_OPTFLAGS)" == "/Oxs"
+DBGFLAGS=$(MSC_OPTFLAGS:/Oxs=/Ox)
+!ENDIF
+
+!IFDEF ALPHA_WARNING_LEVEL
+MSC_WARNING_LEVEL=$(ALPHA_WARNING_LEVEL)
+!ENDIF
+
+!IFDEF ALPHA_OPTIMIZATION
+MSC_OPTIMIZATION=$(ALPHA_OPTIMIZATION)
+!ENDIF
+
+!IFDEF ALPHA_CPPFLAGS
+MSC_CPPFLAGS=$(ALPHA_CPPFLAGS)
+!ENDIF
+
+ALPHA_AS=asaxp -nologo
+
+ALPHA_START_FILE=start.obj
+
+# Use /Z7 instead of /Zi
+
+DBGFLAGS=$(DBGFLAGS:/Zi=/Z7)
+
+ENV_DEFINES=$(LIBC_DEFINES) $(C_DEFINES) $(NET_C_DEFINES) $(MSC_CPPFLAGS) $(NTCPPFLAGS)
+STD_DEFINES=-DALPHA=1 -D_ALPHA_=1 -DNO_EXT_KEYS -DCONDITION_HANDLING=1 $(STD_DEFINES)
+
+STDFLAGS= /c /Zel /Zp8 /Gy $(MSC_WARNING_LEVEL) $(MFC_FLAGS)
+
+CDEFINES=$(STD_DEFINES) $(TARGET_DBG_DEFINES) $(ENV_DEFINES)
+CFLAGS=$(ALPHA_FLAGS) $(NTALPHAFLAGS) $(STDFLAGS) $(DBGFLAGS) $(ALPHA_PERFFLAGS) \
+ -D__stdcall= -D__cdecl=
+
+ALPHA_CDEFINES=$(CDEFINES)
+ALPHA_CFLAGS=$(CFLAGS)
+
+!IFNDEF _AXPACC_
+_AXPACC_=0
+!ENDIF
+
+ALPHA_CC = cl $(CBSTRING) -nologo -d2"switch no*check*" $(USER_C_FLAGS)
+
+C_COMPILER_NAME = $(ALPHA_CC)
+CXX_COMPILER_NAME = $(ALPHA_CC)
+C_PREPROCESSOR_NAME = $(ALPHA_CC)
+
+GLOBAL_C_FLAGS = -Ialpha\ -I. $(INCPATH0) $(CDEFINES) \
+ $(ALPHA_OPTIONS) $(CFLAGS) \
+ /Gt$(GPSIZE) -DFPO=1
+
+C_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED) $(COMPILER_WARNINGS)
+CXX_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED_CXX) $(COMPILER_WARNINGS)
+C_PREPROCESSOR_FLAGS = $(GLOBAL_C_FLAGS) -EP -Tc
+
+C_COMPILER= $(C_COMPILER_NAME) $(C_COMPILER_FLAGS)
+CXX_COMPILER=$(CXX_COMPILER_NAME) $(CXX_COMPILER_FLAGS)
+C_PREPROCESSOR = $(C_PREPROCESSOR_NAME) $(C_PREPROCESSOR_FLAGS)
+
+ALPHA_ASSEMBLER=$(ALPHA_AS) -O1 -Ialpha\ -I. $(INCPATH0) $(CDEFINES) \
+ $(ALPHA_FLAGS) $(NTALPHAFLAGS) $(ADBGFLAGS) \
+ -D_LANGUAGE_ASSEMBLY
+
+ECHO_MSG=ClAlpha $< " $(C_COMPILER) "
+ECHO_PRECOMPILED_MSG=CpAlpha $(PRECOMPILED_INCLUDE) " $(C_COMPILER) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ) $(PRECOMPILED_FLAG)"
+
+{..\alpha\}.s{obj\alpha\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsAlpha $< " $(ALPHA_ASSEMBLER) "
+ @$(ALPHA_ASSEMBLER) -o $@ $(MAKEDIR)\..\alpha\$(<F)
+
+{alpha\}.s{obj\alpha\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsAlpha $< " $(ALPHA_ASSEMBLER) "
+ @$(ALPHA_ASSEMBLER) -o $@ $(MAKEDIR)\alpha\$(<F)
+
+.SUFFIXES: .il
+
+{}.il{}.cod:
+ @-erase $@ >nul 2>&1
+ @type <<
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<< -FAac -Fa$(<B).cod -B1..\bootbin\null.exe -Bk$(<B). -Fo$(MAKEDIR)\obj\alpha\$(<B).o $(MAKEDIR)\$(<B).c
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+ @del obj\alpha\$(<B).o
+
+{}.il{obj\alpha\}.obj:
+ @-erase $@ >nul 2>&1
+ @type <<
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<< -B1..\bootbin\null.exe -Bk$(<B). -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(<B).c
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+LIBRARY_OBJS=$(OBJECTS) $(LINKLIBS)
+
+!IFDEF TUKWILA
+_NTTREE=$(_NTALPHATREE)
+!ENDIF
+
+!IFDEF CAIRO_PRODUCT
+!IFDEF _CAIROALPHATREE
+_NTTREE=$(_CAIROALPHATREE)
+!ENDIF
+!ELSE
+!IFDEF _NTALPHATREE
+_NTTREE=$(_NTALPHATREE)
+!ENDIF
+!ENDIF
+
+!IFDEF KERNEL_MODE
+_NTTREE=$(_NTALPHATREE)\km
+!ENDIF
+
+!IFDEF _NTALPHALIBS
+_NTLIBS=$(_NTALPHALIBS)
+!ENDIF
+
+COPYDST=$(ALPHACOPYDST)
+
+LIB_COPY=ntalphacp.cmd
+
+NTTEST_LINK_OPTIONS= -base:0x80080000 -fixed -entry:KiSystemStartup
diff --git a/private/utils/ntbackup/exchange/build/coffbase.txt b/private/utils/ntbackup/exchange/build/coffbase.txt
new file mode 100644
index 000000000..5e8685239
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/coffbase.txt
@@ -0,0 +1,776 @@
+;
+; This file defines the base virtual address for Dynamic Link Libraries (DLL)
+; that are part of the Windows NT System. The first token on a line is the name
+; of the DLL and the second token is the base virtual address, in hexidecimal.
+; The third token is the maximum size of the DLL image file, including symbols.
+;
+; NOTE: I have used the convention of labelling unused areas as _FREExx_.
+; If you need an address, these are available. They were used by printer
+; drivers.
+
+usermode 0x01000000 0x60000000
+slm 0x11000000 0x40000000
+slmck 0x12000000 0x40000000
+sadmin 0x13000000 0x40000000
+;
+; OLE dlls
+;
+ole32 0x19e00000 0x00a00000
+oledlg 0x1a200000 0x00100000
+
+;
+; This section contains the Cairo images. Free areas are labelled with
+; _CFREExx_
+;
+
+proxy 0x10000000 0x00200000
+alertsys 0x10200000 0x00200000
+commnot 0x10400000 0x00200000
+cryptdll 0x10600000 0x00200000
+demoif 0x10800000 0x00200000
+menuedt 0x10a00000 0x00200000
+_CFREE00_ 0x10c00000 0x00200000
+clock 0x10e00000 0x00200000
+cal 0x11000000 0x00200000
+report 0x11200000 0x00200000
+desk 0x11400000 0x00200000
+cxxflt 0x11600000 0x00200000
+clocksch 0x11800000 0x00200000
+_CFREE01_ 0x11a00000 0x00200000
+iclass 0x11c00000 0x00200000
+_CFREE02_ 0x11e00000 0x00200000
+_CFREE02a 0x12000000 0x00200000
+iprod 0x12200000 0x00200000
+kerberos 0x12400000 0x00200000
+ofskd 0x12600000 0x00200000
+applet1 0x12800000 0x00200000
+cairocpl 0x12a00000 0x00200000
+cpo 0x12c00000 0x00200000
+deskapp 0x12e00000 0x00200000
+ntlm 0x13000000 0x00200000
+objsrv 0x13200000 0x00200000
+; for Cairo message store
+msgfno 0x13400000 0x00200000
+lnktrack 0x13600000 0x00200000
+pocket 0x13800000 0x00200000
+dsfsmsgs 0x13a00000 0x00200000
+_CFREE 0x13c00000 0x00200000
+scperf 0x13e00000 0x00100000
+msvcbook 0x13f00000 0x00100000
+dsyscpl 0x14000000 0x00200000
+bmpctl 0x14200000 0x00200000
+spintime 0x14400000 0x00200000
+grpbox 0x14600000 0x00200000
+security 0x14800000 0x00200000
+mdbmsg 0x14a00000 0x00200000
+bimport 0x14c00000 0x00200000
+
+oldctrls 0x15600000 0x00200000
+smctrls 0x15800000 0x00200000
+dahard 0x15a00000 0x00200000
+stdobj 0x15c00000 0x00200000
+csumcat 0x15e00000 0x00200000
+sysmgmt 0x16000000 0x00200000
+cpdskadm 0x16200000 0x00200000
+idfsvol 0x16400000 0x00200000
+testdll 0x16600000 0x00400000
+cap 0x16a00000 0x00200000
+sysinf 0x16c00000 0x00200000
+shdebug 0x16e00000 0x00100000
+_CFREE03_ 0x16f00000 0x00400000
+popups 0x17300000 0x00100000
+replsup 0x17400000 0x00200000
+schema 0x17700000 0x00200000
+useragnt 0x18000000 0x00200000
+vpcont 0x18200000 0x00200000
+uares 0x18400000 0x00200000
+rndrevrp 0x18600000 0x00200000
+pdfpage 0x18800000 0x00200000
+pkgpage 0x18a00000 0x00200000
+package 0x18e00000 0x00200000
+pdf 0x19000000 0x00200000
+dsys 0x19200000 0x00300000
+dfsprov 0x19500000 0x00100000
+dfsinstr 0x19600000 0x00200000
+lprofile 0x19800000 0x00200000
+;19e00000 - 1a2FFFFF used by ole32 and oledlg (see above)
+_CFREE04_ 0x1a300000 0x00B00000
+oleprx32 0x1b000000 0x00500000
+_CFREE05_ 0x1b000000 0x00600000
+testext 0x1b600000 0x00200000
+loghrs 0x1b800000 0x00100000
+scstg 0x1b900000 0x00100000
+smoke 0x1ba00000 0x00100000
+shamu 0x1bc00000 0x01000000
+
+; Repl dlls
+chglogdb 0x1cc00000 0x00100000
+dumyrclr 0x1cd00000 0x00100000
+flatrst 0x1ce00000 0x00100000
+_RFREE1_ 0x1cf00000 0x00300000
+orarcnlr 0x1d200000 0x00100000
+replui 0x1d300000 0x00100000
+roschlog 0x1d400000 0x00100000
+rsmgr 0x1d500000 0x00100000
+dsobjs 0x1d600000 0x00200000
+account 0x1d800000 0x00200000
+ora 0x1da00000 0x00200000
+oraexts 0x1dc00000 0x00100000
+dsmail 0x1dd00000 0x00100000
+atsvc 0x1de00000 0x00100000
+replperf 0x1e000000 0x00100000
+accctrl 0x1e100000 0x00100000
+dssrv 0x1e200000 0x00200000
+
+_CFREE06_ 0x1e400000 0x00600000
+
+;RTO dlls
+_CFREE07_ 0x1eA00000 0x00200000
+webcore 0x1eC00000 0x00200000
+rtoolbar 0x1eE00000 0x00200000
+rtfdoc 0x1f000000 0x00400000
+
+spincube 0x1f400000 0x00200000
+_CFREE08_ 0x1f600000 0x00A00000
+msgina 0x1f400000 0x00200000
+
+smss 0x20000000 0x40000000
+;
+; Printer drivers: resource only data, overlaps SMSS
+;
+brhj770 0x20000000 0x00100000
+brother9 0x20000000 0x00100000
+brothr24 0x20000000 0x00100000
+canon330 0x20000000 0x00100000
+canon800 0x20000000 0x00100000
+canonlbp 0x20000000 0x00100000
+cit24us 0x20000000 0x00100000
+cit9us 0x20000000 0x00100000
+citoh 0x20000000 0x00100000
+dec24pin 0x20000000 0x00100000
+dec9pin 0x20000000 0x00100000
+diconix 0x20000000 0x00100000
+epson24 0x20000000 0x00100000
+epson9 0x20000000 0x00100000
+escp2e 0x20000000 0x00100000
+escp2ms 0x20000000 0x00100000
+fuji24 0x20000000 0x00100000
+fuji9 0x20000000 0x00100000
+hpdskjet 0x20000000 0x00100000
+hppcl 0x20000000 0x00100000
+hppcl5ms 0x20000000 0x00100000
+pcl1200 0x20000000 0x00100000
+ibm238x 0x20000000 0x00100000
+ibm239x 0x20000000 0x00100000
+ibm5204 0x20000000 0x00100000
+ibm5204 0x20000000 0x00100000
+ibmppdsl 0x20000000 0x00100000
+ibmport 0x20000000 0x00100000
+jp350 0x20000000 0x00100000
+kyocera 0x20000000 0x00100000
+mantal 0x20000000 0x00100000
+mantal24 0x20000000 0x00100000
+mantal90 0x20000000 0x00100000
+mt735 0x20000000 0x00100000
+nec24pin 0x20000000 0x00100000
+oki24 0x20000000 0x00100000
+oki9ibm 0x20000000 0x00100000
+olidm24 0x20000000 0x00100000
+olidm9 0x20000000 0x00100000
+paintjet 0x20000000 0x00100000
+panson24 0x20000000 0x00100000
+panson9 0x20000000 0x00100000
+proprint 0x20000000 0x00100000
+proprn24 0x20000000 0x00100000
+ps1 0x20000000 0x00100000
+quietjet 0x20000000 0x00100000
+qwiii 0x20000000 0x00100000
+seiko 0x20000000 0x00100000
+seiko24e 0x20000000 0x00100000
+seikosh9 0x20000000 0x00100000
+star24e 0x20000000 0x00100000
+star9e 0x20000000 0x00100000
+starjet 0x20000000 0x00100000
+thinkjet 0x20000000 0x00100000
+ti850 0x20000000 0x00100000
+toshiba 0x20000000 0x00100000
+txtonly 0x20000000 0x00100000
+
+; Following have code in them
+
+oki9 0x20100000 0x00100000
+dec3200 0x20200000 0x00100000
+
+; End of printer overlap area.
+
+dbgss 0x30000000 0x30000000
+csrss 0x40000000 0x20000000
+cmd 0x50000000 0x10000000
+os2ss 0x40000000 0x20000000
+psxss 0x40000000 0x20000000
+ntdll 0x60100000 0x00100000
+dbgdll 0x60200000 0x00100000
+advapi32 0x60300000 0x00100000
+csrrtl 0x60400000 0x00100000
+csrsrv 0x60500000 0x00100000
+kernel32 0x60600000 0x00100000
+basertl 0x60700000 0x00100000
+basesrv 0x60800000 0x00100000
+user32 0x60A00000 0x00200000
+winsrv 0x60C00000 0x00700000
+winsrv2 0x60C00000 0x00700000
+rasdd 0x61300000 0x00100000
+sysmono 0x61400000 0x00100000
+courier 0x61500000 0x00100000
+helv 0x61600000 0x00100000
+times 0x61700000 0x00100000
+netapi32 0x61800000 0x00200000
+winmgr 0x62100000 0x00100000
+display 0x62200000 0x00100000
+vga 0x62200000 0x00400000
+winspool 0x62600000 0x00100000
+splsrv 0x62700000 0x00100000
+ntprint 0x62800000 0x00100000
+pscript 0x62900000 0x00100000
+halftone 0x62A00000 0x00100000
+lmspool 0x62B00000 0x00100000
+os2dll 0x63000000 0x00200000
+psxdll 0x63200000 0x00200000
+winnet 0x63400000 0x00100000
+msv1_0 0x63500000 0x00100000
+samlib 0x635A0000 0x00100000
+lsaap 0x63600000 0x00100000
+netrap 0x63700000 0x00100000
+TEMPNAME2 0x63800000 0x00700000
+console 0x63f00000 0x00100000
+gdi32 0x64000000 0x00200000
+media 0x65000000 0x00100000
+mediasrv 0x66000000 0x00100000
+
+lprmon 0x66100000 0x00100000
+lprhelp 0x66200000 0x00100000
+lpdsvc 0x66300000 0x00100000
+
+; OpenGL server-side DLL
+glsrv 0x66400000 0x00100000
+
+; kernel-mode user code
+winsrvk 0x66500000 0x00700000
+
+; This space is free!!
+_FREE04_ 0x66c00000 0x00500000
+nddeexts 0x67100000 0x00100000
+sde 0x67200000 0x00100000
+ndrd 0x67300000 0x00100000
+hdxdll 0x67400000 0x00100000
+splexts 0x67500000 0x00100000
+conexts 0x67600000 0x00100000
+gdiexts 0x67700000 0x00100000
+userexts 0x67800000 0x00100000
+; same as userexts
+userkdx 0x67800000 0x00100000
+ntsdexts 0x67900000 0x00100000
+plotter 0x67A00000 0x00100000
+rpcrt4 0x67B00000 0x00100000
+winmm 0x67D00000 0x00100000
+rpcssp 0x67E00000 0x00100000
+mciwave 0x67F00000 0x00100000
+rpclts1 0x68000000 0x00100000
+rpcltc1 0x68100000 0x00100000
+ldrdll 0x68200000 0x00100000
+mcicda 0x68300000 0x00100000
+plotui 0x68400000 0x00100000
+rasddui 0x68500000 0x00100000
+pscrptui 0x68600000 0x00100000
+mmio 0x68700000 0x00100000
+rpcnts1 0x68800000 0x00100000
+rpcntc1 0x68900000 0x00100000
+nlsapi 0x68A00000 0x00100000
+rpcltc6 0x68B00000 0x00100000
+rpclts6 0x68C00000 0x00100000
+olesvr32 0x68D00000 0x00100000
+olecli32 0x68E00000 0x00100000
+msgsvc 0x68F00000 0x00100000
+
+; This space for sale
+decpsmon 0x69000000 0x00100000
+
+sys003 0x69100000 0x00100000
+
+beta2 0x69200000 0x00600000
+psapi 0x69800000 0x00100000
+rpcdce4 0x69900000 0x00100000
+eventlog 0x69A00000 0x00100000
+xactsrv 0x69B00000 0x00100000
+winreg 0x69C00000 0x00100000
+samsrv 0x69D00000 0x00100000
+; same as samsrv
+samlsa 0x69D00000 0x00100000
+mmdrv 0x69F00000 0x00100000
+dlcapi 0x6A000000 0x00100000
+win32spl 0x6A100000 0x00100000
+localspl 0x6A200000 0x00100000
+rpclts5 0x6A300000 0x00100000
+rpcltc5 0x6A400000 0x00100000
+netlogon 0x6A500000 0x00200000
+; same as netlogon
+ntlmsvc 0x6A500000 0x00200000
+tmsre32 0x6A600000 0x00100000
+lsaudll 0x6A700000 0x00100000
+mciseq 0x6A800000 0x00100000
+winprint 0x6A900000 0x00100000
+localmon 0x6AA00000 0x00100000
+msaudite 0x6AB00000 0x00100000
+msobjs 0x6AC00000 0x00100000
+hpmon 0x6AD00000 0x00100000
+alrsvc 0x6AE00000 0x00100000
+srvsvc 0x6AF00000 0x00100000
+wkssvc 0x6B000000 0x00100000
+rpclts3 0x6B100000 0x00100000
+rpcltc3 0x6B200000 0x00100000
+htui 0x6B300000 0x00100000
+lsasrv 0x6B400000 0x00100000
+mmsndsrv 0x6B500000 0x00100000
+midi 0x6B600000 0x00100000
+browser 0x6B700000 0x00100000
+drivers 0x6B800000 0x00100000
+lmmon 0x6B900000 0x00100000
+spoolss 0x6BA00000 0x00100000
+sndblst 0x6BC00000 0x00100000
+opengl32 0x6BD00000 0x00100000
+ntlmssps 0x6BE00000 0x00100000
+glu32 0x6BF00000 0x00100000
+; OpenGL client-side installable driver
+ogldrv 0x6C000000 0x00100000
+
+dciman32 0x6C100000 0x00100000
+
+;
+; The following is an extension for NTSD which traces memory usage in the
+; ULIB utilities...
+;
+memtrace 0x6BF00000 0x00100000
+
+; Cairo Compound Document Forms
+formidbl 0x6C800000 0x00C00000
+fole2ui 0x6D400000 0x00400000
+
+; Windows 95 shell "Sharing" extensions
+ntshrui 0x6D500000 0x00100000
+
+; Win32 shell apps/dlls
+
+control 0x70000000 0x00100000
+access 0x70100000 0x00100000
+sound 0x70200000 0x00100000
+appwiz 0x70300000 0x00100000
+intl 0x70400000 0x00100000
+timedate 0x70500000 0x00100000
+utc 0x70500000 0x00100000
+mouse 0x70600000 0x00100000
+sysdm 0x70700000 0x00100000
+desk 0x70800000 0x00100000
+modem 0x70900000 0x00100000
+security 0x70A00000 0x00100000
+main 0x70B00000 0x00100000
+ups 0x70C00000 0x00100000
+cursors 0x70D00000 0x00100000
+pcmcia 0x70E00000 0x00100000
+comdlg32 0x70F00000 0x00100000
+linkinfo 0x71000000 0x00100000
+version 0x71100000 0x00100000
+comctl32 0x71200000 0x00100000
+nddeapi 0x71300000 0x00100000
+nddenb32 0x71400000 0x00100000
+t1instal 0x71500000 0x00100000
+profile 0x71600000 0x00100000
+mmsys 0x71700000 0x00100000
+ctape 0x71800000 0x00100000
+console 0x71900000 0x00100000
+shscrap 0x71A00000 0x00100000
+password 0x71B00000 0x00100000
+ftsrch 0x71C00000 0x00100000
+docprop 0x71D00000 0x00100000
+shell32 0x71E00000 0x00200000
+shellalt 0x71E00000 0x00200000
+synceng 0x71F00000 0x00080000
+syncui 0x71F80000 0x00080000
+
+; Win32 National Keyboard Layers
+
+kbdus 0x72000000 0x00100000
+kbdbe 0x73000000 0x00100000
+kbdbu 0x73000000 0x00100000
+kbdbr 0x73000000 0x00100000
+kbdca 0x73000000 0x00100000
+kbdcr 0x73000000 0x00100000
+kbdcz 0x73000000 0x00100000
+kbdda 0x73000000 0x00100000
+kbddv 0x73000000 0x00100000
+kbdes 0x73000000 0x00100000
+kbdfc 0x73000000 0x00100000
+kbdfi 0x73000000 0x00100000
+kbdfr 0x73000000 0x00100000
+kbdgr 0x73000000 0x00100000
+kbdhe 0x73000000 0x00100000
+kbdhe220 0x73000000 0x00100000
+kbdhela2 0x73100000 0x00100000
+kbdhe319 0x73000000 0x00100000
+kbdhela3 0x73100000 0x00100000
+kbdhu 0x73000000 0x00100000
+kbdhu1 0x73000000 0x00100000
+kbdic 0x73000000 0x00100000
+kbdit 0x73000000 0x00100000
+kbdit142 0x73000000 0x00100000
+kbdla 0x73000000 0x00100000
+kbdne 0x73000000 0x00100000
+kbdno 0x73000000 0x00100000
+kbdpl 0x73000000 0x00100000
+kbdpl1 0x73000000 0x00100000
+kbdpo 0x73000000 0x00100000
+kbdro 0x73000000 0x00100000
+kbdru 0x73000000 0x00100000
+kbdsf 0x73000000 0x00100000
+kbdsg 0x73000000 0x00100000
+kbdsl 0x73000000 0x00100000
+kbdsp 0x73000000 0x00100000
+kbdsv 0x73000000 0x00100000
+kbdsw 0x73000000 0x00100000
+kbdtuf 0x73000000 0x00100000
+kbdtuq 0x73000000 0x00100000
+kbduk 0x73000000 0x00100000
+kbdusl 0x73000000 0x00100000
+kbdusr 0x73000000 0x00100000
+kbdusx 0x73000000 0x00100000
+kbdhu1 0x73000000 0x00100000
+
+;
+; Cairo ofs dlls
+;
+query 0x74000000 0x00800000
+infosoft 0x74800000 0x00200000
+cxxflt 0x74a00000 0x00200000
+stemdll 0x7d000000 0x00200000
+
+;
+; The following is not currently used until we switch to the new image
+; format with the new section headers.
+;
+executive 0xD0020000 0x18000000
+
+;
+; The following are the Mep extensions
+;
+tglcase 0x09080000 0x00100000
+pmatch 0x09090000 0x00100000
+justify 0x090a0000 0x00100000
+ulcase 0x090b0000 0x00100000
+filter 0x090c0000 0x00100000
+mhelp 0x090d0000 0x00100000
+mepparty 0x090e0000 0x00100000
+srmep 0x090f0000 0x00100000
+mshelp 0x09100000 0x00100000
+mbrowse 0x09110000 0x00100000
+
+;
+; The following are the Z extensions
+;
+zextens 0x09120000 0x00200000
+
+;
+; The following are for the utilities
+;
+ulib 0x09800000 0x00200000
+uhpfs 0x09a10000 0x00100000
+ufat 0x09b20000 0x00100000
+untfs 0x09c30000 0x00100000
+ifsutil 0x09d40000 0x00100000
+cufat 0x09e50000 0x00100000
+cuhpfs 0x09f60000 0x00100000
+fmifs 0x0a070000 0x00100000
+uspifs 0x0a180000 0x00100000
+ureg 0x0a290000 0x00100000
+uofs 0x0a3a0000 0x00400000
+ofsutil 0x0a7b0000 0x00400000
+autoulib 0x0a7b0000 0x00400000
+autouofs 0x0a3a0000 0x00400000
+
+;
+; ofsutil and autoulib are never loaded at the same time
+;
+ulibif 0x0add0000 0x00100000
+cudbfs 0x0aee0000 0x00100000
+
+;
+; The following are for the net error messages
+;
+netmsg 0x09500000 0x00080000
+neth 0x09580000 0x00080000
+netevent 0x09600000 0x00080000
+
+;
+; The following is the I/O error log messages.
+;
+iologmsg 0x09700000 0x00080000
+
+;
+; The following is for the 16-bit loader for the OS/2 subsystem
+;
+loader 0x20000000 0x01000000
+
+;
+; The following is for the PE format image help routines.
+;
+
+imagehlp 0x20000000 0x01000000
+symhelp 0x21000000 0x01000000
+
+;
+; The following is for the Streams/Sockets dll's
+;
+wsock32 0x75000000 0x00400000
+winstrm 0x75400000 0x00100000
+inetmib1 0x75500000 0x00100000
+lmmib2 0x75600000 0x00100000
+tcpipsvc 0x75700000 0x00100000
+nbtsvc 0x75800000 0x00100000
+telnet 0x75900000 0x00100000
+wshtcpip 0x75a00000 0x00100000
+mgmtapi 0x75b00000 0x00100000
+icmp 0x75c00000 0x00100000
+inettrap 0x75d00000 0x00100000
+testdll 0x75e00000 0x00100000
+lmhsvc 0x75f00000 0x00100000
+dhcpsapi 0x76000000 0x00100000
+dhcpcsvc 0x76100000 0x00100000
+dhcpssvc 0x76200000 0x00100000
+tcpsvcs 0x76300000 0x00100000
+ftpsvc 0x76400000 0x00100000
+ftpsvapi 0x76500000 0x00100000
+ftpctrs 0x76600000 0x00100000
+
+;
+; The following are for rpc datagram transport modules
+;
+
+rpcdgc3 0x76700000 0x00100000
+rpcdgs3 0x76800000 0x00100000
+rpcdgc6 0x76900000 0x00100000
+rpcdgs6 0x76a00000 0x00100000
+
+;
+; The following are for RPC ADSP transport interface modules
+;
+
+rpcltc7 0X76b00000 0x00100000
+rpclts7 0X76c00000 0x00100000
+
+;
+; The following are for the HTTP (WWW) server
+;
+
+w3svc 0x76d00000 0x00100000
+w3svapi 0x76e00000 0x00100000
+w3ctrs 0x76f00000 0x00100000
+httpodbc 0x77700000 0x00100000
+
+;
+; The following are for Gopher Service
+;
+
+gopherd 0x77000000 0x00100000
+gdapi 0x77100000 0x00100000
+gdctrs 0x77200000 0x00100000
+gdspace 0x77300000 0x00100000
+
+;
+; The following are Internet services common dlls
+;
+
+tcpsvcs 0x77400000 0x00100000
+inetasrv 0x77500000 0x00100000
+inetctrs 0x77600000 0x00100000
+;used 0x77700000 0x00100000
+
+;
+; Smalprox dlls (client side internet proxy)
+;
+
+miniprox 0x77800000 0x00100000
+_wsock32 0x77900000 0x00080000
+wsock32f 0x77980000 0x00080000
+
+;
+; The following are for the windowed debugger (windbg)
+;
+
+eecxxx86 0x40000000 0x00200000
+eecxxmip 0x40000000 0x00200000
+eecxxalp 0x40000000 0x00200000
+eecxxppc 0x40000000 0x00200000
+eecxx 0x40000000 0x00200000
+emx86 0x48000000 0x00200000
+emmip 0x48000000 0x00200000
+emalp 0x48000000 0x00200000
+emppc 0x48000000 0x00200000
+shcoff 0x50000000 0x00200000
+shcv 0x50000000 0x00200000
+tlloc 0x58000000 0x00200000
+tlser 0x58000000 0x00200000
+tlser32s 0x58000000 0x00200000
+tlser32 0x58000000 0x00200000
+tlpipe 0x58000000 0x00200000
+dm 0x58200000 0x00200000
+dm32s 0x58200000 0x00200000
+dmkdx86 0x58200000 0x00200000
+dmkdmip 0x58200000 0x00200000
+dmkdalp 0x58200000 0x00200000
+dmkdppc 0x58200000 0x00200000
+kdextx86 0x58400000 0x00200000
+kdextmip 0x58400000 0x00200000
+kdextalp 0x58400000 0x00200000
+kdextppc 0x58400000 0x00200000
+
+;
+; The following are for the NetUI components.
+;
+
+acledit 0x58500000 0x00200000
+mpr 0x58700000 0x00100000
+ntlanman 0x58800000 0x00200000
+srvmgr 0x58a00000 0x00200000
+ncpa 0x58c00000 0x00200000
+mprui 0x58e00000 0x00200000
+netui0 0x59000000 0x00200000
+netui1 0x59200000 0x00300000
+netui2 0x59500000 0x00400000
+ftpsmx 0x59900000 0x00100000
+ftpmgr 0x59a00000 0x00100000
+nwcfg 0x59b00000 0x00100000
+ntlanui 0x59c00000 0x00200000
+tcpcfg 0x59e00000 0x00100000
+ipxcfg 0x59f00000 0x00100000
+ntlsapi 0x5a000000 0x00100000
+srvkd 0x5b000000 0x00100000
+llsrpc 0x5c000000 0x00100000
+
+;
+; Network Card detection
+;
+netdtect 0x79000000 0x00100000
+msncdet 0x79100000 0x00100000
+npincdet 0x79200000 0x00100000
+amdncdet 0x79300000 0x00100000
+netflx 0x79400000 0x00100000
+
+;
+; Bloodhound components
+;
+bhsupp 0x79700000 0x00100000
+nal 0x79800000 0x00100000
+bhmon 0x79900000 0x00100000
+ndis30 0x79A00000 0x00100000
+bhnetb 0x79B00000 0x00100000
+rnal 0x79C00000 0x00100000
+bhkctrl 0x79D00000 0x00100000
+;
+; Nw components
+;
+nwsap 0x7A100000 0x00100000
+
+
+;
+; Ports applet
+;
+port 0x73600000 0x00200000
+
+;
+; System applet
+;
+
+system 0x73800000 0x00200000
+
+; more Cairo control panel components
+
+cpprint 0x73A00000 0x00100000
+cpups 0x73B00000 0x00100000
+cpsrvcs 0x74c00000 0x00100000
+
+;
+; DS object property pages.
+;
+
+dsui 0x73C00000 0x00400000
+
+;
+; DS Container object class
+;
+
+dscont 0x7C800000 0x00100000
+
+;
+;
+; jet blue dll.
+;
+
+jet 0x7B100000 0x00400000
+
+
+;
+; wins dlls
+;
+winsctrs 0x7C100000 0x00100000
+winsmib 0x7C200000 0x00200000
+dhcpmib 0x7C400000 0x00100000
+winsevnt 0x7C500000 0x00100000
+winsrpc 0x7C600000 0x00100000
+winsrpcb 0x7C700000 0x00100000
+
+;
+; The following are for the SCC filters used by the Content index
+;
+SCCUT 0x7d500000 0x00040000
+SCCFA 0x7d540000 0x00040000
+SCCFI 0x7d580000 0x00040000
+SCCIFILT 0x7d600000 0x00040000
+VSACS 0x7d640000 0x00040000
+VSBMP 0x7d640000 0x00040000
+VSDBS 0x7d640000 0x00040000
+VSDRW 0x7d640000 0x00040000
+VSEXE 0x7d640000 0x00040000
+VSGIF 0x7d640000 0x00040000
+VSMCW 0x7d640000 0x00040000
+VSMSW 0x7d640000 0x00040000
+VSMWP2 0x7d640000 0x00040000
+VSMWPF 0x7d640000 0x00040000
+VSPCL 0x7d640000 0x00040000
+VSPDX 0x7d640000 0x00040000
+VSPFS 0x7d640000 0x00040000
+VSPP 0x7d640000 0x00040000
+VSQPW 0x7d640000 0x00040000
+VSRTF 0x7d640000 0x00040000
+VSTIFF 0x7d640000 0x00040000
+VSTEXT 0x7d640000 0x00040000
+VSTXT 0x7d640000 0x00040000
+VSVW3 0x7d640000 0x00040000
+VSW6 0x7d640000 0x00040000
+VSWKS 0x7d640000 0x00040000
+VSWMF 0x7d640000 0x00040000
+VSWORD 0x7d640000 0x00040000
+VSWORK 0x7d640000 0x00040000
+VSWP5 0x7d640000 0x00040000
+VSWP6 0x7d640000 0x00040000
+VSWPF 0x7d640000 0x00040000
+VSXL5 0x7d640000 0x00040000
+VSXY 0x7d640000 0x00040000
+
+;
+; MFC Dlls
+;
+CFM30 0x7d680000 0x00200000
+CFM30U 0x7d680000 0x00200000
+CFMO30 0x7d880000 0x00080000
+CFMO30U 0x7d880000 0x00080000
+NTCTL3D 0x7D900000 0x00010000
+
+
diff --git a/private/utils/ntbackup/exchange/build/i386mk.inc b/private/utils/ntbackup/exchange/build/i386mk.inc
new file mode 100644
index 000000000..91326b37a
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/i386mk.inc
@@ -0,0 +1,247 @@
+!IF 0
+
+Copyright (c) 1994 Microsoft Corporation
+
+Module Name:
+
+ i386mk.inc
+
+Abstract:
+
+ This module contains the x86 specific build controls. It is included
+ by makefile.def.
+
+Author:
+
+ Jeff Havens (jhavens) 13-Feb-1994
+
+Revision History:
+
+!ENDIF
+
+#
+# x86 option control
+#
+
+UMBASE=$(UMBASE:*=i386)
+UMLIBS=$(UMLIBS:*=i386)
+NTRES=$(NTRES:*=i386)
+UMRES=$(UMRES:*=i386)
+UMOBJS=$(UMOBJS:*=i386)
+LINKLIBS=$(LINKLIBS:*=i386)
+DLLBASE=$(DLLBASE:*=i386)
+DLLDEF=$(DLLDEF:*=i386)
+MACHINE_TARGETLIBS=$(MACHINE_TARGETLIBS:*=i386)
+TARGET=$(TARGET:*=i386)
+DYNLINK_LIB=$(DYNLINK_LIB:*=i386)
+TARGETEXEFILES=$(TARGETEXEFILES:*=i386)
+TARGETLIBFILES=$(TARGETLIBFILES:*=i386)
+TARGETOBJFILES=$(TARGETOBJFILES:*=i386)
+UMOBJFILES=$(UMOBJFILES:*=i386)
+UMEXEFILES=$(UMEXEFILES:*=i386)
+HEADERFILE=$(HEADERFILE:*=i386)
+HEADEROBJNAME=$(HEADEROBJNAME:*=i386)
+HEADEROBJ=$(HEADEROBJ:*=i386)
+PRECOMPILED=$(PRECOMPILED:*=i386)
+PRECOMPILED_CXX=$(PRECOMPILED_CXX:*=i386)
+PRECOMPILED_TARGET=$(PRECOMPILED_TARGET:*=i386)
+
+!ifdef NTTARGETFILES
+NTTARGETFILES=$(NTTARGETFILES:*=i386)
+!endif
+!ifdef NTTARGETFILE0
+NTTARGETFILE0=$(NTTARGETFILE0:*=i386)
+!endif
+!ifdef NTTARGETFILE1
+NTTARGETFILE1=$(NTTARGETFILE1:*=i386)
+!endif
+
+!IF "$(DLLENTRY)" != "-noentry"
+DLLENTRY=$(DLLENTRY)@12
+!ENDIF
+
+!IFDEF STD_CALL_ENTRY
+UMENTRY=$(UMENTRY)@4
+!ENDIF
+
+ENTRY_SUFFIX=@8
+GDI_ENTRY_SUFFIX=@12
+
+!IFDEF 386_WARNING_LEVEL
+MSC_WARNING_LEVEL=$(386_WARNING_LEVEL)
+!ENDIF
+!IFDEF 386_OPTIMIZATION
+MSC_OPTIMIZATION=$(386_OPTIMIZATION)
+!message $(MAKEDIR)\sources (1) : Overriding default optimizations with $(386_OPTIMIZATION)
+!ELSE
+!IF "$(CBSTRING)" == ""
+MSC_OPTIMIZATION=$(MSC_OPTIMIZATION) /Gf /QI6
+!ELSE
+MSC_OPTIMIZATION=$(MSC_OPTIMIZATION) /QI6
+!ENDIF
+!ENDIF
+!IFDEF 386_CPPFLAGS
+MSC_CPPFLAGS=$(386_CPPFLAGS)
+!ENDIF
+
+STDFLAGS= /c /Zel /Zp8 /Gy $(CBSTRING) $(MSC_WARNING_LEVEL) $(MSC_CALL_TYPE) /G4 $(MFC_FLAGS)
+
+#LINKLIBS=$(LINKLIBS) $(BASEDIR)\public\sdk\lib\i386\int64.lib
+
+!IF "$(TARGETTYPE)"=="DRIVER" || \
+ "$(TARGETTYPE)"=="GDI_DRIVER" || \
+ "$(TARGETTYPE)"=="MINIPORT"
+#
+#Drivers don't link with link libs.
+#
+
+MACHINE_TARGETLIBS=$(MACHINE_TARGETLIBS) $(BASEDIR)\public\sdk\lib\i386\int64.lib
+!ENDIF
+
+!IF "$(386_STDCALL)" == "0"
+MSC_CALL_TYPE=/Gd
+MSC_CALL_DEFINE=
+!ELSE
+! IF "$(386_STDCALL)" == "2"
+MSC_CALL_TYPE=/Gr
+MSC_CALL_DEFINE=
+! ELSE
+MSC_CALL_TYPE=/Gz
+MSC_CALL_DEFINE=-DSTD_CALL
+! ENDIF
+!ENDIF
+
+!IF "$(NTDEBUG)" == "retail" || "$(NTDEBUG)" == ""
+! IFDEF NTNOFPO
+!MESSAGE $(NTMAKEENV)\i386mk.inc(1) : Overriding FPO default with NTNOFPO
+TARGET_DBG_DEFINES= $(TARGET_DBG_DEFINES) -DFPO=0
+DBGFLAGS=$(DBGFLAGS) /Oy-
+! ELSE
+TARGET_DBG_DEFINES= $(TARGET_DBG_DEFINES) -DFPO=1
+DBGFLAGS=$(DBGFLAGS) /Oy
+! ENDIF
+!ELSE
+TARGET_DBG_DEFINES= $(TARGET_DBG_DEFINES) -DFPO=0
+DBGFLAGS=$(DBGFLAGS) /Oy-
+386_ADBGFLAGS=$(386_ADBGFLAGS) /Zi
+!ENDIF
+
+# Use /Z7 instead of /Zi
+
+DBGFLAGS=$(DBGFLAGS:/Zi=/Z7)
+
+!IFDEF NTLEGO
+DBGFLAGS=$(DBGFLAGS) /Z7
+386_ADBGFLAGS=$(386_ADBGFLAGS) /Zi
+LINKER_FLAGS=$(LINKER_FLAGS) -debug:full -debugtype:cv,fixup
+LINKER_MERGE_RDATA=
+!ENDIF
+
+!IF "$(BROWSER_INFO)" == "yes"
+BROWSER= -FR$*.sbr
+!ELSE
+BROWSER=
+!ENDIF
+
+
+#
+# 386 option control
+#
+
+ENV_DEFINES= $(MSC_CPPFLAGS) $(NTCPPFLAGS)
+
+!IF "$(HALTYPE)" == ""
+HALDEF=
+!ELSE
+HALDEF=-D$(HALTYPE)=1
+!ENDIF
+
+STD_DEFINES= -D_X86_=1 -Di386=1 $(HALDEF) $(MSC_CALL_DEFINE) $(STD_DEFINES)
+
+CDEFINES=$(STD_DEFINES) $(TARGET_DBG_DEFINES) $(ENV_DEFINES) \
+ $(LIBC_DEFINES) $(C_DEFINES) $(NET_C_DEFINES)
+CFLAGS=$(386_FLAGS) $(NT386FLAGS) $(STDFLAGS) $(DBGFLAGS) \
+ $(BROWSER) $(386_PERFFLAGS) $(USER_C_FLAGS)
+386_ASMFLAGS=$(386_ADBGFLAGS) $(BROWSER) $(STD_DEFINES) \
+ $(TARGET_DBG_DEFINES) $(ENV_DEFINES) $(ASM_DEFINES)
+
+386_CDEFINES=$(CDEFINES)
+386_CFLAGS=$(CFLAGS)
+
+CC_NAME = cl -nologo
+
+C_COMPILER_NAME = $(CC_NAME)
+CXX_COMPILER_NAME = $(CC_NAME)
+C_PREPROCESSOR_NAME = $(CC_NAME)
+
+GLOBAL_C_FLAGS = -Ii386\ -I. $(INCPATH1) $(CDEFINES) $(CFLAGS)
+
+C_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED) $(COMPILER_WARNINGS)
+CXX_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED_CXX) $(COMPILER_WARNINGS)
+C_PREPROCESSOR_FLAGS = $(GLOBAL_C_FLAGS) -EP -Tc
+
+C_COMPILER = $(C_COMPILER_NAME) $(C_COMPILER_FLAGS)
+CXX_COMPILER = $(CXX_COMPILER_NAME) $(CXX_COMPILER_FLAGS)
+C_PREPROCESSOR = $(C_PREPROCESSOR_NAME) $(C_PREPROCESSOR_FLAGS)
+
+386_ASSEMBLER=ml -c -coff -Cx -nologo -Ii386\ -I. $(INCPATH1) -Zm $(386_ASMFLAGS)
+
+ECHO_MSG=$(C_COMPILER) $<
+ECHO_PRECOMPILED_MSG=$(C_COMPILER) /Yl$(TARGETNAME) $(HEADERFILE) $(HEADEROBJ) $(PRECOMPILED_FLAG) $(PRECOMPILED_INCLUDE)
+
+{}.c{}.asm:
+ $(C_COMPILER_NAME) @<< /Fa $(MAKEDIR)\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\i386\}.asm{}.lst:
+ $(386_ASSEMBLER) /Fl$@ /Foobj\i386\$(@B).obj $<
+
+{i386\}.asm{}.lst:
+ $(386_ASSEMBLER) /Fl$@ /Fo$(MAKEDIR)\obj\i386\$(@B).obj $<
+
+{..\i386\}.asm{obj\i386\}.obj:
+ $(386_ASSEMBLER) -Fo$(MAKEDIR)\$@ $<
+
+{i386\}.asm{obj\i386\}.obj:
+ $(386_ASSEMBLER) -Fo$(MAKEDIR)\$@ $<
+
+LINKFLAGS=$(LNKFLAGS)
+
+LIBRARY_OBJS=$(LINKLIBS) $(OBJECTS)
+
+!IFDEF TUKWILA
+_NTTREE=$(_NT386TREE)
+!ENDIF
+
+!IF DEFINED (CAIRO_PRODUCT)
+! IF DEFINED (_CAIRO386TREE)
+_NTTREE=$(_CAIRO386TREE)
+! ENDIF
+!ELSEIF DEFINED (CHICAGO_PRODUCT)
+! IF DEFINED (_CHICAGO386TREE)
+_NTTREE=$(_CHICAGO386TREE)
+! elseif defined(_NT386TREE)
+_NTTREE=$(_NT386TREE)
+! ENDIF
+!ELSEIF DEFINED (_NT386TREE)
+_NTTREE=$(_NT386TREE)
+!ENDIF
+
+!IFDEF KERNEL_MODE
+_NTTREE=$(_NT386TREE)\km
+!ENDIF
+
+!IFDEF _NT386LIBS
+_NTLIBS=$(_NT386LIBS)
+!ENDIF
+
+COPYDST=$(386COPYDST)
+LIB_COPY=nti386cp.cmd
+
+!IF "$(NTDEBUGTYPE)" == "windbg" || "$(NTDEBUGTYPE)" == "both"
+NTTEST_LINK_OPTIONS=-entry:main
+!ELSE
+NTTEST_LINK_OPTIONS=-fixed -base:0x80100000 -entry:main
+!ENDIF
diff --git a/private/utils/ntbackup/exchange/build/inc/common.ver b/private/utils/ntbackup/exchange/build/inc/common.ver
new file mode 100644
index 000000000..00c8f6b17
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/inc/common.ver
@@ -0,0 +1,96 @@
+
+/*---------------------------------------------------------------*/
+/* */
+/* The following section actually creates the version structure. */
+/* They are ignored if we are not being invoked by RC. */
+/* */
+/* ntverp.H must be included before including this file */
+/* */
+/* If VER_LEGALCOPYRIGHT_STR is not defined, it will be */
+/* constructed using VER_LEGALCOPYRIGHT_YEARS, so at least one */
+/* these macros must be defined before including this file. */
+/* */
+/* VER_FILETYPE, VER_FILESUBTYPE, VER_FILEDESCRIPTION_STR, and */
+/* VER_INTERNALNAME_STR must be defined before including this */
+/* file. */
+/* */
+/* If VER_FILEVERSION is not defined, VER_PRODUCTVERSION will be */
+/* used instead. If VER_FILEVERSION_STR is not defined, */
+/* VER_PRODUCTVERSION_STR will be used instead. */
+/* */
+/* If VER_ORIGINALFILENAME_STR is not defined, it is set to */
+/* the value in VER_INTERNALNAME_STR. */
+/* */
+/* If INTL is defined, then this is assumed to be an */
+/* an international build; two string blocks will be created, */
+/* (since all version resources must have English), and the */
+/* second one can be localized */
+/* */
+/*---------------------------------------------------------------*/
+
+#ifdef RC_INVOKED
+
+#ifndef VER_LEGALCOPYRIGHT_YEARS
+#define VER_LEGALCOPYRIGHT_YEARS "1981-1995"
+#endif
+
+#ifndef VER_LEGALCOPYRIGHT_STR
+#define VER_LEGALCOPYRIGHT_STR "Copyright \251 Microsoft Corp. " VER_LEGALCOPYRIGHT_YEARS
+#endif
+
+#ifndef VER_PRODUCTNAME_STR
+#define VER_PRODUCTNAME_STR "Microsoft\256 Windows NT(TM) Operating System"
+#endif
+
+#ifndef VER_PRODUCTVERSION
+#define VER_PRODUCTVERSION 4,00,01,552
+#endif
+
+#ifndef VER_FILEVERSION
+#define VER_FILEVERSION VER_PRODUCTVERSION
+#endif
+
+#ifndef VER_PRODUCTVERSION_STR
+#define VER_PRODUCTVERSION_STR "4.00"
+#endif
+
+#ifndef VER_FILEVERSION_STR
+#define VER_FILEVERSION_STR VER_PRODUCTVERSION_STR
+#endif
+
+#ifndef VER_ORIGINALFILENAME_STR
+#define VER_ORIGINALFILENAME_STR VER_INTERNALNAME_STR
+#endif
+
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION VER_FILEVERSION
+PRODUCTVERSION VER_PRODUCTVERSION
+FILEFLAGSMASK VER_FILEFLAGSMASK
+FILEFLAGS VER_FILEFLAGS
+FILEOS VER_FILEOS
+FILETYPE VER_FILETYPE
+FILESUBTYPE VER_FILESUBTYPE
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904B0" /* LANG_ENGLISH/SUBLANG_ENGLISH_US, Unicode CP */
+ BEGIN
+ VALUE "CompanyName", VER_COMPANYNAME_STR
+ VALUE "FileDescription", VER_FILEDESCRIPTION_STR
+ VALUE "FileVersion", VER_FILEVERSION_STR
+ VALUE "InternalName", VER_INTERNALNAME_STR
+ VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
+ VALUE "OriginalFilename",VER_ORIGINALFILENAME_STR
+ VALUE "ProductName", VER_PRODUCTNAME_STR
+ VALUE "ProductVersion", VER_PRODUCTVERSION_STR
+ END
+
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 0x04B0
+ END
+END
+
+#endif
diff --git a/private/utils/ntbackup/exchange/build/inc/ntddscsi.h b/private/utils/ntbackup/exchange/build/inc/ntddscsi.h
new file mode 100644
index 000000000..332821056
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/inc/ntddscsi.h
@@ -0,0 +1,229 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddscsi.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the SCSI port adapters.
+
+Author:
+
+ Jeff Havens
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDSCSIH_
+#define _NTDDSCSIH_
+
+//
+// Device Name - this string is the name of the device. It is the name
+// that should be passed to NtOpenFile when accessing the device.
+//
+// Note: For devices that support multiple units, it should be suffixed
+// with the Ascii representation of the unit number.
+//
+
+#define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER
+
+#define DD_SCSI_DEVICE_NAME "\\Device\\ScsiPort"
+
+
+//
+// NtDeviceIoControlFile IoControlCode values for this device.
+//
+// Warning: Remember that the low two bits of the code specify how the
+// buffers are passed to the driver!
+//
+
+#define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SCSI_RESCAN_BUS CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SCSI_GET_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// Define the SCSI pass through structure.
+//
+
+typedef struct _SCSI_PASS_THROUGH {
+ USHORT Length;
+ UCHAR ScsiStatus;
+ UCHAR PathId;
+ UCHAR TargetId;
+ UCHAR Lun;
+ UCHAR CdbLength;
+ UCHAR SenseInfoLength;
+ UCHAR DataIn;
+ ULONG DataTransferLength;
+ ULONG TimeOutValue;
+ ULONG DataBufferOffset;
+ ULONG SenseInfoOffset;
+ UCHAR Cdb[16];
+}SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
+
+//
+// Define the SCSI pass through direct structure.
+//
+
+typedef struct _SCSI_PASS_THROUGH_DIRECT {
+ USHORT Length;
+ UCHAR ScsiStatus;
+ UCHAR PathId;
+ UCHAR TargetId;
+ UCHAR Lun;
+ UCHAR CdbLength;
+ UCHAR SenseInfoLength;
+ UCHAR DataIn;
+ ULONG DataTransferLength;
+ ULONG TimeOutValue;
+ PVOID DataBuffer;
+ ULONG SenseInfoOffset;
+ UCHAR Cdb[16];
+}SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
+
+//
+// Define SCSI information.
+// Used with the IOCTL_SCSI_GET_INQUIRY_DATA IOCTL.
+//
+
+typedef struct _SCSI_BUS_DATA {
+ UCHAR NumberOfLogicalUnits;
+ UCHAR InitiatorBusId;
+ ULONG InquiryDataOffset;
+}SCSI_BUS_DATA, *PSCSI_BUS_DATA;
+
+//
+// Define SCSI adapter bus information structure..
+// Used with the IOCTL_SCSI_GET_INQUIRY_DATA IOCTL.
+//
+
+typedef struct _SCSI_ADAPTER_BUS_INFO {
+ UCHAR NumberOfBuses;
+ SCSI_BUS_DATA BusData[1];
+} SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
+
+//
+// Define SCSI adapter bus information.
+// Used with the IOCTL_SCSI_GET_INQUIRY_DATA IOCTL.
+//
+
+typedef struct _SCSI_INQUIRY_DATA {
+ UCHAR PathId;
+ UCHAR TargetId;
+ UCHAR Lun;
+ BOOLEAN DeviceClaimed;
+ ULONG InquiryDataLength;
+ ULONG NextInquiryDataOffset;
+ UCHAR InquiryData[1];
+}SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
+
+//
+// Define header for I/O control SRB.
+//
+
+typedef struct _SRB_IO_CONTROL {
+ ULONG HeaderLength;
+ UCHAR Signature[8];
+ ULONG Timeout;
+ ULONG ControlCode;
+ ULONG ReturnCode;
+ ULONG Length;
+} SRB_IO_CONTROL, *PSRB_IO_CONTROL;
+
+//
+// SCSI port driver capabilities structure.
+//
+
+typedef struct _IO_SCSI_CAPABILITIES {
+
+ //
+ // Length of this structure
+ //
+
+ ULONG Length;
+
+ //
+ // Maximum transfer size in single SRB
+ //
+
+ ULONG MaximumTransferLength;
+
+ //
+ // Maximum number of physical pages per data buffer
+ //
+
+ ULONG MaximumPhysicalPages;
+
+ //
+ // Async calls from port to class
+ //
+
+ ULONG SupportedAsynchronousEvents;
+
+ //
+ // Alignment mask for data transfers.
+ //
+
+ ULONG AlignmentMask;
+
+ //
+ // Supports tagged queuing
+ //
+
+ BOOLEAN TaggedQueuing;
+
+ //
+ // Host adapter scans down for bios devices.
+ //
+
+ BOOLEAN AdapterScansDown;
+
+ //
+ // The host adapter uses programmed I/O.
+ //
+
+ BOOLEAN AdapterUsesPio;
+
+} IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
+
+typedef struct _SCSI_ADDRESS {
+ ULONG Length;
+ UCHAR PortNumber;
+ UCHAR PathId;
+ UCHAR TargetId;
+ UCHAR Lun;
+}SCSI_ADDRESS, *PSCSI_ADDRESS;
+
+//
+// Define structure for returning crash dump pointers.
+//
+
+typedef struct _ADAPTER_OBJECT;
+
+typedef struct _DUMP_POINTERS {
+ struct _ADAPTER_OBJECT *AdapterObject;
+ PVOID MappedRegisterBase;
+ PVOID PortConfiguration;
+ PVOID CommonBufferVa;
+ LARGE_INTEGER CommonBufferPa;
+ ULONG CommonBufferSize;
+} DUMP_POINTERS, *PDUMP_POINTERS;
+
+//
+// Define values for pass-through DataIn field.
+//
+
+#define SCSI_IOCTL_DATA_OUT 0
+#define SCSI_IOCTL_DATA_IN 1
+#define SCSI_IOCTL_DATA_UNSPECIFIED 2
+#endif
diff --git a/private/utils/ntbackup/exchange/build/inc/ntverp.h b/private/utils/ntbackup/exchange/build/inc/ntverp.h
new file mode 100644
index 000000000..e36cae5ed
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/inc/ntverp.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+ * *
+ * ntverp.H -- Version information for internal builds *
+ * *
+ * This file is only modified by the official builder to update the *
+ * VERSION, VER_PRODUCTVERSION, VER_PRODUCTVERSION_STR and *
+ * VER_PRODUCTBETA_STR values. *
+ * *
+ ****************************************************************************/
+
+/*--------------------------------------------------------------*/
+/* the following values should be modified by the official */
+/* builder for each build */
+/*--------------------------------------------------------------*/
+
+#define VER_PRODUCTBUILD 599
+#define VER_PRODUCTVERSION_STR "4.00"
+#define VER_PRODUCTVERSION 4,00,VER_PRODUCTBUILD,1
+#define VER_PRODUCTBETA_STR ""
+
+/*--------------------------------------------------------------*/
+/* the following section defines values used in the version */
+/* data structure for all files, and which do not change. */
+/*--------------------------------------------------------------*/
+
+/* default is nodebug */
+#if DBG
+#define VER_DEBUG VS_FF_DEBUG
+#else
+#define VER_DEBUG 0
+#endif
+
+/* default is prerelease */
+#if BETA
+#define VER_PRERELEASE VS_FF_PRERELEASE
+#else
+#define VER_PRERELEASE 0
+#endif
+
+#define VER_FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#define VER_FILEOS VOS_NT_WINDOWS32
+#define VER_FILEFLAGS (VER_PRERELEASE|VER_DEBUG)
+
+#define VER_COMPANYNAME_STR "Microsoft Corporation"
+#define VER_PRODUCTNAME_STR "Microsoft\256 Windows NT(TM) Operating System"
+#define VER_LEGALTRADEMARKS_STR \
+"Microsoft\256 is a registered trademark of Microsoft Corporation. Windows NT(TM) is a trademark of Microsoft Corporation."
diff --git a/private/utils/ntbackup/exchange/build/inc/pcrt32.h b/private/utils/ntbackup/exchange/build/inc/pcrt32.h
new file mode 100644
index 000000000..9a6e59aec
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/inc/pcrt32.h
@@ -0,0 +1,39 @@
+/*
+ * porting macros for c runtimes - use these to let 16 bit crt calls work
+ * properly on 32 bit code.
+ */
+
+
+#define _ffree free
+#define _fmalloc malloc
+#define _fmemccpy memccpy
+#define _fmemchr memchr
+#define _fmemcmp memcmp
+#define _fmemcpy memcpy
+#define _fmemicmp memicmp
+#define _fmemmove memmove
+#define _fmemset memset
+#define _frealloc realloc
+#define _fstrcat strcat
+#define _fstrchr strchr
+#define _fstrcmp strcmp
+#define _fstrcpy strcpy
+#define _fstrcspn strcspn
+#define _fstrdup strdup
+#define _fstricmp stricmp
+#define _fstrlen strlen
+#define _fstrlwr strlwr
+#define _fstrncat strncat
+#define _fstrncmp strncmp
+#define _fstrncpy strncpy
+#define _fstrnicmp strnicmp
+#define _fstrnset strnset
+#define _fstrpbrk strpbrk
+#define _fstrrchr strrchr
+#define _fstrrev strrev
+#define _fstrset strset
+#define _fstrspn strspn
+#define _fstrstr strstr
+#define _fstrtok strtok
+#define _fstrupr strupr
+
diff --git a/private/utils/ntbackup/exchange/build/inc/plan32.h b/private/utils/ntbackup/exchange/build/inc/plan32.h
new file mode 100644
index 000000000..728c0d82e
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/inc/plan32.h
@@ -0,0 +1,14 @@
+/*****************************************************************************\
+* PLAN32.H - PORTABILITY MAPPING HEADER FILE
+*
+* This file provides macros to map portable lanman code to its 32 bit form.
+\*****************************************************************************/
+
+
+/*----------------------------------LANMAN----------------------------------*/
+
+/* LANMAN MACROS: */
+
+#define COPYTOARRAY(pDest, pSource) pDest = pSource
+
+/* LANMAN API: */
diff --git a/private/utils/ntbackup/exchange/build/inc/port1632.h b/private/utils/ntbackup/exchange/build/inc/port1632.h
new file mode 100644
index 000000000..d24831d19
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/inc/port1632.h
@@ -0,0 +1,40 @@
+/***************************************************************************\
+* Module Name: 1632PORT.H
+*
+* Copyright (c) 1985-1993, Microsoft Corporation
+*
+* Master include file for Portable Windows applications.
+*
+* History:
+* sanfords 1/10/91 Created
+*
+\***************************************************************************/
+
+/*
+ * This file maps a Meta-API for Windows to specific 16-bit or 32-bit forms
+ * allowing a single portable C source for windows to work on multiple
+ * versions of Windows.
+ */
+
+#ifndef _PORT1632_
+#define _PORT1632_
+
+#if defined(WIN16)
+/* ---------------- Maps to windows 3.0 and 3.1 16-bit APIs ----------------*/
+#include "ptypes16.h"
+#include "pwin16.h"
+#include "plan16.h"
+/* -------------------------------------------------------------------------*/
+
+#elif defined(WIN32)
+/* ---------------- Maps to windows 3.2 and 4.0 32-bit APIs ----------------*/
+#include "ptypes32.h"
+#include "pcrt32.h"
+#include "pwin32.h"
+#include "plan32.h"
+/* -------------------------------------------------------------------------*/
+#else
+#error You must define either WIN32 or WIN16
+#endif /* WIN32 or WIN16 */
+#endif /* ndef _PORT1632_ */
+
diff --git a/private/utils/ntbackup/exchange/build/inc/ptypes32.h b/private/utils/ntbackup/exchange/build/inc/ptypes32.h
new file mode 100644
index 000000000..8b2118b09
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/inc/ptypes32.h
@@ -0,0 +1,62 @@
+/*****************************************************************************\
+* PTYPES32.H - PORTABILITY MAPPING HEADER FILE
+*
+* This file provides types for 16/32 bit portable code.
+\*****************************************************************************/
+
+#include <setjmp.h>
+
+/* TYPES: */
+
+#define HUGE_T
+typedef DWORD WORD2DWORD ;
+typedef DWORD CHARPARM ;
+typedef DWORD SHORTPARM ;
+typedef DWORD VERSION ;
+typedef LPSTR PDLLMEM ;
+typedef unsigned long CHAR2ULONG ;
+typedef unsigned long USHORT2ULONG ;
+typedef unsigned long SHORT2ULONG ;
+typedef unsigned long INT2DWORD ;
+typedef unsigned short BYTE2WORD ;
+typedef POINTS MPOINT ;
+typedef WORD INT2WORD ;
+typedef jmp_buf MCATCHBUF ;
+typedef MCATCHBUF *LPMCATCHBUF ;
+
+#define HFILE2INT(h, flags) (INT)_open_osfhandle((long)(h), (int)(flags))
+#define INT2HFILE(i) (HFILE)_get_osfhandle((int)(i))
+#define DUPHFILE(h) MDupHandle(h)
+#define MGLOBALPTR(p) (LPSTR)(p)
+
+/* PRAGMAS */
+
+#define _LOADDS
+#define _EXPORT
+
+#define ERROR_GETADDR_FAILED 0x8001
+
+#define INITWINDOWS()
+
+#define WF_PMODE 0x0001 /* from winkrnl.h */
+#define WF_CPU286 0x0002
+#define WF_CPU386 0x0004
+#define WF_CPU486 0x0008
+#define WF_STANDARD 0x0010
+#define WF_WIN286 0x0010
+#define WF_ENHANCED 0x0020
+#define WF_WIN386 0x0020
+#define WF_CPU086 0x0040
+#define WF_CPU186 0x0080
+#define WF_LARGEFRAME 0x0100
+#define WF_SMALLFRAME 0x0200
+#define WF_80x87 0x0400
+
+
+/* DEFINITIONS */
+
+
+#define TF_FORCEDRIVE (BYTE)0x80
+#define DLLMEM_MOVEABLE 0
+#define DLLMEM_ZEROINIT GMEM_ZEROINIT
+
diff --git a/private/utils/ntbackup/exchange/build/inc/pwin32.h b/private/utils/ntbackup/exchange/build/inc/pwin32.h
new file mode 100644
index 000000000..2b9de0fe7
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/inc/pwin32.h
@@ -0,0 +1,305 @@
+/*****************************************************************************\
+* PWIN32.H - PORTABILITY MAPPING HEADER FILE
+*
+* This file provides macros to map portable windows code to its 32 bit form.
+\*****************************************************************************/
+
+/*-----------------------------------USER------------------------------------*/
+
+/* HELPER MACROS */
+
+#define MAPVALUE(v16, v32) (v32)
+#define MAPTYPE(v16, v32) v32
+#define MAKEMPOINT(l) (*((MPOINT *)&(l)))
+#define MPOINT2POINT(mpt,pt) ((pt).x = (mpt).x, (pt).y = (mpt).y)
+#define POINT2MPOINT(pt, mpt) ((mpt).x = (SHORT)(pt).x, (mpt).y = (SHORT)(pt).y)
+#define LONG2POINT(l, pt) ((pt).x = (SHORT)LOWORD(l), (pt).y = (SHORT)HIWORD(l))
+
+#define SETWINDOWUINT(hwnd, index, ui) (UINT)SetWindowLong(hwnd, index, (LONG)(ui))
+#define GETWINDOWUINT(hwnd, index) (UINT)GetWindowLong(hwnd, index)
+#define SETCLASSUINT(hwnd, index, ui) (UINT)SetClassLong(hwnd, index, (LONG)(ui))
+#define GETCLASSUINT(hwnd, index) (UINT)GetClassLong(hwnd, index)
+
+#define GETCBCLSEXTRA(hwnd) GETCLASSUINT(hwnd, GCL_CBCLSEXTRA)
+#define SETCBCLSEXTRA(hwnd, cb) SETCLASSUINT(hwnd, GCL_CBCLSEXTRA, cb)
+#define GETCBWNDEXTRA(hwnd) GETCLASSUINT(hwnd, GCL_CBWNDEXTRA)
+#define SETCBWNDEXTRA(hwnd, cb) SETCLASSUINT(hwnd, GCL_CBWNDEXTRA, cb)
+#define GETCLASSBRBACKGROUND(hwnd) (HBRUSH)GETCLASSUINT(hwnd, GCL_HBRBACKGROUND)
+#define SETCLASSBRBACKGROUND(hwnd, h) (HBRUSH)SETCLASSUINT(hwnd, GCL_HBRBACKGROUND, h)
+#define GETCLASSCURSOR(hwnd) (HCURSOR)GETCLASSUINT(hwnd, GCL_HCURSOR)
+#define SETCLASSCURSOR(hwnd, h) (HCURSOR)SETCLASSUINT(hwnd, GCL_HCURSOR, h)
+#define GETCLASSHMODULE(hwnd) (HMODULE)GETCLASSUINT(hwnd, GCL_HMODULE)
+#define SETCLASSHMODULE(hwnd, h) (HMODULE)SETCLASSUINT(hwnd, GCL_HMODULE, h)
+#define GETCLASSICON(hwnd) (HICON)GETCLASSUINT((hwnd), GCL_HICON)
+#define SETCLASSICON(hwnd, h) (HICON)SETCLASSUINT((hwnd), GCL_HICON, h)
+#define GETCLASSSTYLE(hwnd) GETCLASSUINT((hwnd), GCL_STYLE)
+#define SETCLASSSTYLE(hwnd, style) SETCLASSUINT((hwnd), GCL_STYLE, style)
+#define GETHWNDINSTANCE(hwnd) (HINSTANCE)GETWINDOWUINT((hwnd), GWL_HINSTANCE)
+#define SETHWNDINSTANCE(hwnd, h) (HINSTANCE)SETWINDOWUINT((hwnd), GWL_HINSTANCE, h)
+#define GETHWNDPARENT(hwnd) (HWND)GETWINDOWUINT((hwnd), GWL_HWNDPARENT)
+#define SETHWNDPARENT(hwnd, h) (HWND)SETWINDOWUINT((hwnd), GWL_HWNDPARENT, h)
+#define GETWINDOWID(hwnd) GETWINDOWUINT((hwnd), GWL_ID)
+#define SETWINDOWID(hwnd, id) SETWINDOWUINT((hwnd), GWL_ID, id)
+
+/* USER API */
+
+#define MDlgDirSelect(hDlg, lpstr, nLength, nIDListBox) \
+ DlgDirSelectEx(hDlg, lpstr, nLength, nIDListBox)
+
+#define MDlgDirSelectCOMBOBOX(hDlg, lpstr, nLength, nIDComboBox) \
+ DlgDirSelectComboBoxEx(hDlg, lpstr, nLength, nIDComboBox)
+
+#define MGetLastError GetLastError
+
+#define MMain(hInst, hPrevInst, lpCmdLine, nCmdShow) \
+ INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, \
+ INT nCmdShow) { \
+ INT _argc; \
+ CHAR **_argv;
+
+LPSTR MGetCmdLine(VOID);
+DWORD WINAPI MSendMsgEM_GETSEL(HWND hDlg, WORD2DWORD * piStart, WORD2DWORD * piEnd);
+
+
+/* USER MESSAGES: */
+
+#define GET_WPARAM(wp, lp) (wp)
+#define GET_LPARAM(wp, lp) (lp)
+
+#define GET_WM_ACTIVATE_STATE(wp, lp) LOWORD(wp)
+#define GET_WM_ACTIVATE_FMINIMIZED(wp, lp) (BOOL)HIWORD(wp)
+#define GET_WM_ACTIVATE_HWND(wp, lp) (HWND)(lp)
+#define GET_WM_ACTIVATE_MPS(s, fmin, hwnd) \
+ (WPARAM)MAKELONG((s), (fmin)), (LONG)(hwnd)
+
+#define GET_WM_CHARTOITEM_CHAR(wp, lp) (TCHAR)LOWORD(wp)
+#define GET_WM_CHARTOITEM_POS(wp, lp) HIWORD(wp)
+#define GET_WM_CHARTOITEM_HWND(wp, lp) (HWND)(lp)
+#define GET_WM_CHARTOITEM_MPS(ch, pos, hwnd) \
+ (WPARAM)MAKELONG((pos), (ch)), (LONG)(hwnd)
+
+#define GET_WM_COMMAND_ID(wp, lp) LOWORD(wp)
+#define GET_WM_COMMAND_HWND(wp, lp) (HWND)(lp)
+#define GET_WM_COMMAND_CMD(wp, lp) HIWORD(wp)
+#define GET_WM_COMMAND_MPS(id, hwnd, cmd) \
+ (WPARAM)MAKELONG(id, cmd), (LONG)(hwnd)
+
+#define WM_CTLCOLOR 0x0019
+
+#define GET_WM_CTLCOLOR_HDC(wp, lp, msg) (HDC)(wp)
+#define GET_WM_CTLCOLOR_HWND(wp, lp, msg) (HWND)(lp)
+#define GET_WM_CTLCOLOR_TYPE(wp, lp, msg) (WORD)(msg - WM_CTLCOLORMSGBOX)
+#define GET_WM_CTLCOLOR_MSG(type) (WORD)(WM_CTLCOLORMSGBOX+(type))
+#define GET_WM_CTLCOLOR_MPS(hdc, hwnd, type) \
+ (WPARAM)(hdc), (LONG)(hwnd)
+
+
+#define GET_WM_MENUSELECT_CMD(wp, lp) LOWORD(wp)
+#define GET_WM_MENUSELECT_FLAGS(wp, lp) (UINT)(int)(short)HIWORD(wp)
+#define GET_WM_MENUSELECT_HMENU(wp, lp) (HMENU)(lp)
+#define GET_WM_MENUSELECT_MPS(cmd, f, hmenu) \
+ (WPARAM)MAKELONG(cmd, f), (LONG)(hmenu)
+
+// Note: the following are for interpreting MDIclient to MDI child messages.
+#define GET_WM_MDIACTIVATE_FACTIVATE(hwnd, wp, lp) (lp == (LONG)hwnd)
+#define GET_WM_MDIACTIVATE_HWNDDEACT(wp, lp) (HWND)(wp)
+#define GET_WM_MDIACTIVATE_HWNDACTIVATE(wp, lp) (HWND)(lp)
+// Note: the following is for sending to the MDI client window.
+#define GET_WM_MDIACTIVATE_MPS(f, hwndD, hwndA)\
+ (WPARAM)(hwndA), 0
+
+#define GET_WM_MDISETMENU_MPS(hmenuF, hmenuW) (WPARAM)hmenuF, (LONG)hmenuW
+
+#define GET_WM_MENUCHAR_CHAR(wp, lp) (TCHAR)LOWORD(wp)
+#define GET_WM_MENUCHAR_HMENU(wp, lp) (HMENU)(lp)
+#define GET_WM_MENUCHAR_FMENU(wp, lp) (BOOL)HIWORD(wp)
+#define GET_WM_MENUCHAR_MPS(ch, hmenu, f) \
+ (WPARAM)MAKELONG(ch, f), (LONG)(hmenu)
+
+#define GET_WM_PARENTNOTIFY_MSG(wp, lp) LOWORD(wp)
+#define GET_WM_PARENTNOTIFY_ID(wp, lp) HIWORD(wp)
+#define GET_WM_PARENTNOTIFY_HWNDCHILD(wp, lp) (HWND)(lp)
+#define GET_WM_PARENTNOTIFY_X(wp, lp) (INT)LOWORD(lp)
+#define GET_WM_PARENTNOTIFY_Y(wp, lp) (INT)HIWORD(lp)
+#define GET_WM_PARENTNOTIFY_MPS(msg, id, hwnd) \
+ (WPARAM)MAKELONG(id, msg), (LONG)(hwnd)
+#define GET_WM_PARENTNOTIFY2_MPS(msg, x, y) \
+ (WPARAM)MAKELONG(0, msg), MAKELONG(x, y)
+
+#define GET_WM_VKEYTOITEM_CODE(wp, lp) (INT)LOWORD(wp)
+#define GET_WM_VKEYTOITEM_ITEM(wp, lp) HIWORD(wp)
+#define GET_WM_VKEYTOITEM_HWND(wp, lp) (HWND)(lp)
+#define GET_WM_VKEYTOITEM_MPS(code, item, hwnd) \
+ (WPARAM)MAKELONG(item, code), (LONG)(hwnd)
+
+#define GET_EM_SETSEL_START(wp, lp) (INT)(wp)
+#define GET_EM_SETSEL_END(wp, lp) (lp)
+#define GET_EM_SETSEL_MPS(iStart, iEnd) \
+ (WPARAM)(iStart), (LONG)(iEnd)
+
+#define GET_EM_LINESCROLL_MPS(vert, horz) \
+ (WPARAM)horz, (LONG)vert
+
+#define GET_WM_CHANGECBCHAIN_HWNDNEXT(wp, lp) (HWND)(lp)
+
+#define GET_WM_HSCROLL_CODE(wp, lp) LOWORD(wp)
+#define GET_WM_HSCROLL_POS(wp, lp) HIWORD(wp)
+#define GET_WM_HSCROLL_HWND(wp, lp) (HWND)(lp)
+#define GET_WM_HSCROLL_MPS(code, pos, hwnd) \
+ (WPARAM)MAKELONG(code, pos), (LONG)(hwnd)
+
+#define GET_WM_VSCROLL_CODE(wp, lp) LOWORD(wp)
+#define GET_WM_VSCROLL_POS(wp, lp) HIWORD(wp)
+#define GET_WM_VSCROLL_HWND(wp, lp) (HWND)(lp)
+#define GET_WM_VSCROLL_MPS(code, pos, hwnd) \
+ (WPARAM)MAKELONG(code, pos), (LONG)(hwnd)
+
+/* DDE macros */
+
+LONG WINAPI PackDDElParam(UINT msg, UINT uiLo, UINT uiHi);
+BOOL WINAPI UnpackDDElParam(UINT msg, LONG lParam, PUINT puiLo, PUINT puiHi);
+BOOL WINAPI FreeDDElParam(UINT msg, LONG lParam);
+UINT WINAPI MGetDDElParamLo(UINT msg, LONG lParam);
+UINT WINAPI MGetDDElParamHi(UINT msg, LONG lParam);
+BOOL WINAPI MPostDDEMsg(HWND hTo, UINT msg, HWND hFrom, UINT uiLo, UINT uiHi);
+
+#define DDEFREE(msg, lp) FreeDDElParam(msg, lp)
+
+#define GET_WM_DDE_ACK_STATUS(wp, lp) ((WORD)MGetDDElParamLo(WM_DDE_ACK, lp))
+#define GET_WM_DDE_ACK_ITEM(wp, lp) ((ATOM)MGetDDElParamHi(WM_DDE_ACK, lp))
+#define MPostWM_DDE_ACK(hTo, hFrom, wStatus, aItem) \
+ MPostDDEMsg(hTo, WM_DDE_ACK, hFrom, (UINT)wStatus, (UINT)aItem)
+
+#define GET_WM_DDE_ADVISE_HOPTIONS(wp, lp) ((HANDLE)MGetDDElParamLo(WM_DDE_ADVISE, lp))
+#define GET_WM_DDE_ADVISE_ITEM(wp, lp) ((ATOM)MGetDDElParamHi(WM_DDE_ADVISE, lp))
+#define MPostWM_DDE_ADVISE(hTo, hFrom, hOptions, aItem) \
+ MPostDDEMsg(hTo, WM_DDE_ADVISE, hFrom, (UINT)hOptions, (UINT)aItem)
+
+#define GET_WM_DDE_DATA_HDATA(wp, lp) ((HANDLE)MGetDDElParamLo(WM_DDE_DATA, lp))
+#define GET_WM_DDE_DATA_ITEM(wp, lp) ((ATOM)MGetDDElParamHi(WM_DDE_DATA, lp))
+#define MPostWM_DDE_DATA(hTo, hFrom, hData, aItem) \
+ MPostDDEMsg(hTo, WM_DDE_DATA, hFrom, (UINT)hData, (UINT)aItem)
+
+#define GET_WM_DDE_EXECUTE_HDATA(wp, lp) ((HANDLE)lp)
+#define MPostWM_DDE_EXECUTE(hTo, hFrom, hDataExec) \
+ PostMessage(hTo, WM_DDE_EXECUTE, (WPARAM)hFrom, (LONG)hDataExec)
+
+#define GET_WM_DDE_POKE_HDATA(wp, lp) ((HANDLE)MGetDDElParamLo(WM_DDE_POKE, lp))
+#define GET_WM_DDE_POKE_ITEM(wp, lp) ((ATOM)MGetDDElParamHi(WM_DDE_POKE, lp))
+#define MPostWM_DDE_POKE(hTo, hFrom, hData, aItem) \
+ MPostDDEMsg(hTo, WM_DDE_POKE, hFrom, (UINT)hData, (UINT)aItem)
+
+#define GET_WM_DDE_EXECACK_STATUS(wp, lp) ((WORD)MGetDDElParamLo(WM_DDE_ACK, lp))
+#define GET_WM_DDE_EXECACK_HDATA(wp, lp) ((HANDLE)MGetDDElParamHi(WM_DDE_ACK, lp))
+#define MPostWM_DDE_EXECACK(hTo, hFrom, wStatus, hCommands) \
+ MPostDDEMsg(hTo, WM_DDE_ACK, hFrom, (UINT)wStatus, (UINT)hCommands)
+
+#define GET_WM_DDE_REQUEST_FORMAT(wp, lp) ((ATOM)LOWORD(lp))
+#define GET_WM_DDE_REQUEST_ITEM(wp, lp) ((ATOM)HIWORD(lp))
+#define MPostWM_DDE_REQUEST(hTo, hFrom, fmt, aItem) \
+ MPostDDEMsg(hTo, WM_DDE_REQUEST, hFrom, (UINT)fmt, (UINT)aItem)
+
+#define GET_WM_DDE_UNADVISE_FORMAT(wp, lp) ((ATOM)LOWORD(lp))
+#define GET_WM_DDE_UNADVISE_ITEM(wp, lp) ((ATOM)HIWORD(lp))
+#define MPostWM_DDE_UNADVISE(hTo, hFrom, fmt, aItem) \
+ MPostDDEMsg(hTo, WM_DDE_UNADVISE, hFrom, (UINT)fmt, (UINT)aItem)
+
+#define MPostWM_DDE_TERMINATE(hTo, hFrom) \
+ PostMessage(hTo, WM_DDE_TERMINATE, (WPARAM)hFrom, 0L)
+
+
+/*-----------------------------------GDI-------------------------------------*/
+
+BOOL WINAPI MGetAspectRatioFilter(HDC hdc, INT * pcx, INT * pcy);
+BOOL WINAPI MGetBitmapDimension(HANDLE hBitmap, INT * pcx, INT *pcy);
+BOOL WINAPI MGetBrushOrg(HDC hdc, INT * px, INT * py);
+BOOL WINAPI MGetCurrentPosition(HDC hdc, INT * px, INT * py);
+BOOL WINAPI MGetTextExtent(HDC hdc, LPSTR lpstr, INT cnt, INT *pcx, INT *pcy);
+BOOL WINAPI MGetViewportExt(HDC hdc, INT * pcx, INT * pcy);
+BOOL WINAPI MGetViewportOrg(HDC hdc, INT * px, INT * py);
+BOOL WINAPI MGetWindowExt(HDC hdc, INT * pcx, INT * pcy);
+BOOL WINAPI MGetWindowOrg(HDC hdc, INT * px, INT * py);
+HANDLE WINAPI MGetMetaFileBits(HMETAFILE hmf);
+HMETAFILE WINAPI MSetMetaFileBits(HANDLE h);
+
+#define MCreateDiscardableBitmap(h, x, y) CreateCompatibleBitmap(h, (DWORD)(x), (DWORD)(y))
+#define MMoveTo(hdc, x, y) MoveToEx(hdc, x, y, NULL)
+#define MOffsetViewportOrg(hdc, x, y) OffsetViewportOrgEx(hdc, x, y, NULL)
+#define MOffsetWindowOrg(hdc, x, y) OffsetWindowOrgEx(hdc, x, y, NULL)
+#define MScaleViewportExt(hdc, x, y, xd, yd) ScaleViewportExtEx(hdc, x, y, xd, yd, NULL)
+#define MScaleWindowExt(hdc, x, y, xd, yd) ScaleWindowExtEx(hdc, x, y, xd, yd, NULL)
+#define MSetBitmapDimension(hbm, x, y) SetBitmapDimensionEx(hbm, (DWORD)(x), (DWORD)(y), NULL)
+#define MSetBrushOrg(hbm, x, y) SetBrushOrgEx(hbm, x, y, NULL)
+#define MSetViewportExt(hdc, x, y) SetViewportExtEx(hdc, x, y, NULL)
+#define MSetViewportOrg(hdc, x, y) SetViewportOrgEx(hdc, x, y, NULL)
+#define MSetWindowExt(hdc, x, y) SetWindowExtEx(hdc, x, y, NULL)
+#define MSetWindowOrg(hdc, x, y) SetWindowOrgEx(hdc, x, y, NULL)
+
+/* Removed APIs */
+
+#define MUnrealizeObject(h) ((h), TRUE)
+
+/*-------------------------------------DEV-----------------------------------*/
+
+DWORD WINAPI MDeviceCapabilities(LPSTR lpDriverName, LPSTR lpDeviceName,
+ LPSTR lpPort, WORD2DWORD nIndex, LPSTR lpOutput, LPDEVMODE lpDevMode);
+BOOL WINAPI MDeviceMode(HWND hWnd, LPSTR lpDriverName, LPSTR lpDeviceName, LPSTR lpOutput);
+WORD2DWORD WINAPI MExtDeviceMode(HWND hWnd,LPSTR lpDriverName,
+ LPDEVMODE lpDevModeOutput, LPSTR lpDeviceName, LPSTR lpPort,
+ LPDEVMODE lpDevModeInput, LPSTR lpProfile, WORD2DWORD flMode);
+
+/*-----------------------------------KERNEL----------------------------------*/
+
+HFILE WINAPI MDupHandle(HFILE h);
+BOOL WINAPI MFreeDOSEnvironment(LPSTR lpEnv);
+HANDLE WINAPI MGetInstHandle(VOID);
+LPSTR WINAPI MGetDOSEnvironment(VOID);
+WORD WINAPI MGetDriveType(INT nDrive);
+BYTE WINAPI MGetTempDrive(BYTE cDriveLtr);
+INT WINAPI MGetTempFileName(BYTE cDriveLtr, LPSTR lpstrPrefix, WORD wUnique, LPSTR lpTempFileName);
+INT WINAPI MReadComm(HFILE nCid, LPSTR lpBuf, INT nSize);
+INT WINAPI MWriteComm(HFILE nCid, LPSTR lpBuf, INT nSize);
+
+
+#define GETMAJORVERSION(x) ((x)&0xff)
+#define GETMINORVERSION(x) (((x)>>8)&0xff)
+
+/* FUNCTION MAPPINGS */
+
+#define GetInstanceData(hPrevInst, pbuf, cb) (cb)
+#define MOpenComm(lpstr, wqin, wqout) (wqin), (wqout), CreateFile(lpstr, \
+ GENERIC_READ | GENERIC_WRITE, 0, \
+ NULL, \
+ OPEN_EXISTING | TRUNCATE_EXISTING, \
+ FILE_FLAG_WRITE_THROUGH, 0)
+
+#define MSetCommState(h, lpDCB) SetCommState((HANDLE)h, lpDCB)
+#define MCloseComm(h) (INT)!CloseHandle((HANDLE)h)
+#define MDllSharedAlloc(dwFlags, dwBytes) GlobalAlloc(GMEM_DDESHARE | dwFlags, dwBytes)
+#define MDllSharedFlags(hMem) GlobalFlags(hMem)
+#define MDllSharedFree GlobalFree
+#define MDllSharedHandle GlobalHandle
+#define MDllSharedLock GlobalLock
+#define MDllSharedRealloc(hMem, dwBytes, dwFlags) \
+ GlobalReAlloc(hMem, dwBytes, dwFlags)
+#define MDllSharedSize GlobalSize
+#define MDllSharedUnlock GlobalUnlock
+#define MGetCurrentTask GetCurrentThreadId
+#define MGetModuleUsage(h) ((h), 1)
+#define MGetWinFlags() WF_PMODE
+#define MLoadLibrary(lpsz) LoadLibrary(lpsz)
+#define MLocalInit(w, p1, p2) ((w),(p1),(p2),TRUE)
+#define MLockData(dummy)
+#define MUnlockData(dummy)
+#define M_lclose(fh) _lclose((HFILE)fh)
+#define M_lcreat (HFILE)_lcreat
+#define MOpenFile (HFILE)OpenFile
+#define M_llseek(fh, lOff, iOrg) SetFilePointer((HANDLE)fh, lOff, NULL, (DWORD)iOrg)
+#define MDeleteFile DeleteFile
+#define M_lopen (HFILE)_lopen
+#define M_lread(fh, lpBuf, cb) _lread((HFILE)fh, lpBuf, cb)
+#define M_lwrite(fh, lpBuf, cb) _lwrite((HFILE)fh, lpBuf, cb)
+
+#define MCatch setjmp
+#define MThrow longjmp
+
diff --git a/private/utils/ntbackup/exchange/build/inc/uiexport.h b/private/utils/ntbackup/exchange/build/inc/uiexport.h
new file mode 100644
index 000000000..6bd0b59f4
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/inc/uiexport.h
@@ -0,0 +1,132 @@
+/**********************************************************************/
+/** Microsoft Windows NT **/
+/** Copyright(c) Microsoft Corp., 1992 **/
+/**********************************************************************/
+
+/*
+ uiexport.h
+
+ Prototypes for Net UI exported APIs
+
+
+
+ FILE HISTORY:
+ Johnl 17-Apr-1992 Created
+
+*/
+
+#ifndef _UIEXPORT_H_
+#define _UIEXPORT_H_
+
+
+/* Selections the user can make in the System focus dialog
+ */
+
+/* Low word of the selection type
+ */
+#define FOCUSDLG_DOMAINS_ONLY (1)
+#define FOCUSDLG_SERVERS_ONLY (2)
+#define FOCUSDLG_SERVERS_AND_DOMAINS (3)
+
+/* High word of the selection type contains a bitmask indicating
+ * which domains to display in the dialog.
+ * WARNING: This bitmask are shifted up 16 bits from the bitmask in
+ * \nt\private\net\ui\common\h\domenum.h. If you want to
+ * modify the values of the bitmask, you will need to
+ * make corresponding changes to domenum.h.
+ *
+ */
+
+#define FOCUSDLG_BROWSE_LOGON_DOMAIN 0x00010000
+#define FOCUSDLG_BROWSE_WKSTA_DOMAIN 0x00020000
+#define FOCUSDLG_BROWSE_OTHER_DOMAINS 0x00040000
+#define FOCUSDLG_BROWSE_TRUSTING_DOMAINS 0x00080000
+#define FOCUSDLG_BROWSE_WORKGROUP_DOMAINS 0x00100000
+
+/* Some handy combinations of flags.
+*/
+
+/* FOCUSDLG_BROWSE_LM2X_DOMAINS will return only the domains available
+ from a LanMan 2.x workstation. This returns just the logon,
+ workstation, and other domains. This is the default value.
+*/
+
+#define FOCUSDLG_BROWSE_LM2X_DOMAINS ( FOCUSDLG_BROWSE_LOGON_DOMAIN | \
+ FOCUSDLG_BROWSE_WKSTA_DOMAIN | \
+ FOCUSDLG_BROWSE_OTHER_DOMAINS )
+
+/*
+ FOCUSDLG_BROWSE_LOCAL_DOMAINS will return only the domains available
+ to the local machine. This returns the logon, workstation,
+ and other, plus the domains that trust "us".
+*/
+
+#define FOCUSDLG_BROWSE_LOCAL_DOMAINS ( FOCUSDLG_BROWSE_LM2X_DOMAINS | \
+ FOCUSDLG_BROWSE_TRUSTING_DOMAINS )
+
+/*
+ FOCUSDLG_BROWSE_ALL_DOMAINS is a conglomeration of all potential domain
+ sources available to the domain enumerator.
+*/
+
+#define FOCUSDLG_BROWSE_ALL_DOMAINS ( FOCUSDLG_BROWSE_LOCAL_DOMAINS | \
+ FOCUSDLG_BROWSE_WORKGROUP_DOMAINS )
+
+/*******************************************************************
+
+ NAME: I_SystemFocusDialog
+
+ SYNOPSIS: Presents a dialog to the user from which a server or domain
+ maybe selected.
+
+ ENTRY: hwndOwner - Parent window handle
+ nSelectionType - The type of selection the user is allowed
+ to make
+ pszName - The server or domain name. It will be
+ undefined if the user hits the CANCEL
+ button ( pfOK = FALSE )
+ cchBufSize - The buffer size of the lptstrName.
+ pfUserQuit - If the user hits the OKAY button, it will
+ return TRUE. Otherwise, it will return FALSE.
+ pszHelpFile - The helpfile to use when the user hits F1.
+ If NULL, the default helpfile is used.
+ nHelpContext - The helpcontext to use for the helpfile above.
+ If the above is NULL, this must be 0 (& vice
+ versa).
+
+ EXIT: if *pfOKPressed is TRUE (and an error didn't occur), then
+ lptstrName will be filled with the user selected name.
+
+ RETURNS: NO_ERROR on success, standard ERROR_* error code otherwise
+
+ NOTES: This will be a UNICODE only API when the net group goes UNICODE
+
+ HISTORY:
+ JohnL 22-Apr-1992 Added selection option, exported to private\inc
+ ChuckC 03-Nov-1992 Added helpfile & help context
+
+********************************************************************/
+
+UINT FAR PASCAL I_SystemFocusDialog(
+ HWND hwndOwner,
+ UINT nSelectionType,
+ LPWSTR pszName,
+ UINT cchBufSize,
+ BOOL *pfOKPressed,
+ LPWSTR pszHelpFile,
+ DWORD nHelpContext
+ );
+
+typedef UINT (FAR PASCAL *LPFNI_SYSTEMFOCUSDIALOG)(
+ HWND hwndOwner,
+ UINT nSelectionType,
+ LPWSTR pszName,
+ UINT cchBufSize,
+ BOOL *pfOKPressed,
+ LPWSTR pszHelpFile,
+ DWORD nHelpContext
+ );
+
+
+
+#endif //_UIEXPORT_H_
diff --git a/private/utils/ntbackup/exchange/build/inc/warning.h b/private/utils/ntbackup/exchange/build/inc/warning.h
new file mode 100644
index 000000000..a15603981
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/inc/warning.h
@@ -0,0 +1,22 @@
+#pragma warning(3:4092) // sizeof returns 'unsigned long'
+#pragma warning(3:4121) // structure is sensitive to alignment
+#pragma warning(3:4125) // decimal digit in octal sequence
+#pragma warning(3:4130) // logical operation on address of string constant
+#pragma warning(3:4132) // const object should be initialized
+#pragma warning(4:4206) // Source File is empty
+#pragma warning(4:4101) // Unreferenced local variable
+#pragma warning(4:4208) // delete[exp] - exp evaluated but ignored
+#pragma warning(3:4212) // function declaration used ellipsis
+#pragma warning(error:4700) // Local used w/o being initialized
+#pragma warning(error:4259) // pure virtual function was not defined
+#pragma warning(4:4509) // use of SEH with destructor
+#pragma warning(4:4177) // pragma data_seg s/b at global scope
+
+#if 0
+#pragma warning(3:4100) // Unreferenced formal parameter
+#pragma warning(3:4701) // local may be used w/o init
+#pragma warning(3:4702) // Unreachable code
+#pragma warning(3:4705) // Statement has no effect
+#pragma warning(3:4706) // assignment w/i conditional expression
+#pragma warning(3:4709) // command operator w/o index expression
+#endif
diff --git a/private/utils/ntbackup/exchange/build/makefile.def b/private/utils/ntbackup/exchange/build/makefile.def
new file mode 100644
index 000000000..7f7c14429
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/makefile.def
@@ -0,0 +1,2047 @@
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ makefile.def
+
+Abstract:
+
+ This is the standard makefile for the components of the NT project.
+ It includes the following files:
+
+ .\sources. - developer supplies this file. It defines the
+ required TARGETNAME, TARGETPATH, TARGETTYPE and
+ SOURCES as well as optional macros that control
+ the behavior of the compiler and linker:
+
+ obj\_objects.mac - built by BUILD.EXE from .\sources.
+
+
+Targets:
+
+ all - Builds all targets in this make file
+
+ clean - Erase all targets that can be produced by this make
+ file, ignoring errors. Also rebuilds the depend target.
+
+ depend - Rebuilts source file dependencies, using BUILD.EXE tool
+
+Author:
+
+ Steve Wood (stevewo) 28-Feb-1989
+
+
+Revision History:
+ Reza Baghai (rezab) 25-Jan-1993
+ Added -order:*.prf switch for building EXEs
+ Added $(PERFLIBS) to *_LINKLIBS lines to allow linking with
+ optional performance tuning libraries
+ Sudeep Bharati (sudeepb) 10-Dec-1991
+ Added PROGLIB target type, so that NTVDM can export
+ interfaces from an EXE.
+
+ Roger Lanser (a-rlansr) 27-Apr-1993
+ Added MIPS C8 compiler and attempted to generalize variables
+ between the MIPS and INTEL version of C8.
+ Oh yes, removed last remnants of DECSTATION.
+
+Useful Variables Set:
+
+ CPUTYPE={I386|MIPS|ALPHA|PPC}
+
+Optional Controls Variables (partial list), these are environment variables,
+remember they can be set with env=value on the command line as well:
+
+NOTE: xxx_... is {MSC|386|mips|alpha|PPC} where MSC_ applies to the C8 compiler
+ independent of the cpu type. Specific cpu_ will take precedence
+ over the equivalent MSC_ variable.
+
+EXAMPLE: To compile with codeview symbols for windbg:
+
+ set NTDEBUG=ntsd
+ set NTDEBUGTYPE=windbg
+ set MSC_OPTIMIZATION=/Od
+
+
+ nttest=filename
+
+ umtest=filename
+
+ umappl=filename
+
+ NT_UP
+ Define as 0 in environment to turn on MP.
+ If undefined or equal to 1, you get UP.
+
+ xxx_warning_level
+
+ xxx_optimization
+
+ xxx_STDCALL = 1 use _stdcall calling convention
+ 0 use _cdecl calling convention
+
+ ntdebug
+
+ browser_info
+
+ xxx_cppflags
+
+ ntcppflags
+
+ NT_INST - set to turn on instrumentation
+
+ BASEDIR - \nt or \ntrel (default \nt)
+
+ PRECOMPILED_CXX=1 - do precompiled headers for CXX instead of C files
+ note: precompiled headers can not be used on both
+ c and cxx files in a single directory.
+
+ pnp_power=1 | 0 | <empty>
+
+!ENDIF
+
+!if 0
+!message You must use nmake version 1.30 or greater...
+!endif
+
+#
+# IDL/RDL/TDL build rules.
+#
+
+!ifdef IDL_RULES
+IDL_OUT_DIR =.
+IDL_HDR_OUT_DIR =.
+RDL_OUT_DIR =.
+RDL_HDR_OUT_DIR =.
+
+!ifndef MIDL_INCS
+MIDL_INCS = obj\$(TARGET_DIRECTORY)
+!endif
+
+!ifndef MC_OUT_DIR
+MC_OUT_DIR = obj\$(TARGET_DIRECTORY)
+!endif
+!endif
+
+
+#
+# Select build target and set platform specific variables.
+#
+
+!INCLUDE makefile.plt
+
+#
+# Include the developer supplied file that defines the TARGETNAME, TARGETPATH,
+# TARGETTYPE and SOURCES macros. Make sure it defines them.
+#
+
+!INCLUDE .\sources.
+SOURCES_USED=$(SOURCES_USED) .\sources
+
+#
+# Attempt to include the sources file from the target subdirectory.
+#
+
+!IF EXIST(.\$(TARGET_DIRECTORY)\sources.)
+!INCLUDE .\$(TARGET_DIRECTORY)\sources.
+SOURCES_USED=$(SOURCES_USED) .\$(TARGET_DIRECTORY)\sources.
+!ENDIF
+
+#
+# Attempt to include the sources file from the parent target subdirectory.
+#
+
+!IF EXIST(..\$(TARGET_DIRECTORY)\sources.)
+!INCLUDE ..\$(TARGET_DIRECTORY)\sources.
+SOURCES_USED=$(SOURCES_USED) ..\$(TARGET_DIRECTORY)\sources.
+!ENDIF
+
+!IF "$(_NT_LEGO_ON_THIS_MACHINE)" == ""
+!UNDEF NTLEGO
+!ENDIF
+
+!IFNDEF TARGETPATH
+!ERROR Your .\sources. file must define the TARGETPATH= macro
+!ENDIF
+
+!IFNDEF TARGETTYPE
+!ERROR Your .\sources. file must define the TARGETTYPE= macro
+!ENDIF
+
+!IFNDEF TARGETNAME
+! IF "$(TARGETTYPE)" != "NOTARGET"
+!ERROR Your .\sources. file must define the TARGETNAME= macro
+! ELSE
+TARGETNAME=
+! ENDIF
+!ENDIF
+
+!IFNDEF SOURCES
+!ERROR Your .\sources. file must define the SOURCES= macro
+!ENDIF
+
+!IFNDEF UMTYPE
+UMTYPE=nt
+!ENDIF
+
+!IFNDEF UMBASE
+! IFDEF COFFBASE
+UMBASE=@..\exchange\build\coffbase.txt,$(COFFBASE)
+! ELSE
+UMBASE=@..\exchange\build\coffbase.txt,usermode
+! ENDIF
+!ENDIF
+
+LINKLIBS=$(LINKLIBS) $(PERFLIBS)
+
+!IF DEFINED(USE_MFC) || DEFINED(USE_MFCUNICODE)
+
+#---------------------------------------------------------#
+# this set of defines establishes the "correct" build #
+# environment for an app that needs to use MFC. the #
+# app's sources file only needs to specify USE_MFC=1 #
+# and this makefile will set the enviroment up correctly. #
+#---------------------------------------------------------#
+
+UMENTRY=winmain
+UMENTRYABS=
+USE_CRTDLL=1 # CRTDLL s/b used if MFC is.
+
+MFC_FLAGS=$(MFC_FLAGS) -D_AFXDLL -D_AFX_NOFORCE_LIBS
+!IF "$(NTDEBUG)" == "retail" || "$(NTDEBUG)" == "" || "$(NTDEBUG)" == "ntsdnodbg"
+!IFDEF USE_MFCUNICODE
+MFC_LIBS=$(BASEDIR)\public\sdk\lib\*\cfm30u.lib $(BASEDIR)\public\sdk\lib\*\cfmo30u.lib
+!ELSE
+MFC_LIBS=$(BASEDIR)\public\sdk\lib\*\cfm30.lib $(BASEDIR)\public\sdk\lib\*\cfmo30.lib
+!ENDIF
+MFC_FLAGS=$(MFC_FLAGS) -DNDEBUG
+!ELSE
+!IFDEF USE_MFCUNICODE
+MFC_LIBS=$(BASEDIR)\public\sdk\lib\*\cfm30ud.lib $(BASEDIR)\public\sdk\lib\*\cfmo30ud.lib
+!ELSE
+MFC_LIBS=$(BASEDIR)\public\sdk\lib\*\cfm30d.lib $(BASEDIR)\public\sdk\lib\*\cfmo30d.lib
+!ENDIF
+MFC_FLAGS=$(MFC_FLAGS) -D_DEBUG
+USE_PDB=1
+!ENDIF
+
+!IFDEF USE_MFCUNICODE
+UNICODE=1
+MFC_FLAGS=$(MFC_FLAGS) -DUNICODE -D_UNICODE
+!ENDIF
+
+MFC_INCLUDES=$(BASEDIR)\public\sdk\inc\mfc30
+
+LINKLIBS=$(LINKLIBS) $(MFC_LIBS)
+
+!ENDIF # USE_MFC || USE_MFCUNICODE
+
+!IFDEF USE_CRTDLL
+
+LIBC_LIB=crtdll.lib
+LIBC_DEFINES=-D_DLL=1 -D_MT=1
+
+!ELSE
+
+! IFDEF USE_MSVCRT
+LIBC_LIB=msvcrt.lib
+LIBC_DEFINES=-D_DLL=1 -D_MT=1
+
+!ELSE
+
+! IFDEF USE_LIBCMT
+LIBC_LIB=libcmt.lib
+LIBC_DEFINES=-D_MT=1
+
+! ELSE
+
+LIBC_LIB=libc.lib
+LIBC_DEFINES=
+
+! ENDIF
+! ENDIF
+!ENDIF
+
+
+!IFNDEF GPSIZE
+GPSIZE= 0
+!ENDIF
+
+!IFDEF CAIRO_PRODUCT
+CAIRO_LIB_PATH=$(BASEDIR)\public\sdk\lib\cairo\*
+!ENDIF # CAIRO_PRODUCT
+
+!ifdef NTLIBPATH
+LIBRARY_PATH = $(NTLIBPATH)\*\lib
+!else
+!ifdef CHICAGO_PRODUCT
+LIBRARY_PATH = $(BASEDIR)\public\sdk\lib\chicago\*
+!else
+LIBRARY_PATH = $(BASEDIR)\public\sdk\lib\*
+!endif
+!endif
+
+!ifndef NTLIBCPATH
+NTLIBCPATH=$(LIBRARY_PATH)
+!endif
+
+LIBC_LIB = $(NTLIBCPATH)\$(LIBC_LIB)
+
+NT_LIBS=$(LIBRARY_PATH)\ntdll.lib
+GUI32_LIBS=$(LIBRARY_PATH)\gdi32.lib \
+ $(LIBRARY_PATH)\user32.lib
+
+!IFDEF CAIRO_PRODUCT
+!IFNDEF TUKWILA
+NT_LIBS=$(NT_LIBS:lib\*\ntdll.lib=lib\cairo\*\ntdll.lib)
+!ENDIF
+GUI32_LIBS=$(GUI32_LIBS:lib\*\user32.lib=lib\cairo\*\user32.lib)
+!ENDIF
+
+CRT_LIBS=
+
+NT_CRT=$(LIBRARY_PATH)\nt.lib
+WIN32_LIBS=$(LIBC_LIB) \
+ $(LIBRARY_PATH)\advapi32.lib \
+ $(LIBRARY_PATH)\kernel32.lib
+
+NTSS_LIBS=$(NT_LIBS) $(NT_CRT) $(BASEDIR)\public\sdk\lib\*\smdll.lib
+
+OS2_LIBS=$(NT_LIBS) $(BASEDIR)\public\sdk\lib\*\os2dll.lib \
+ $(CRT_LIBS)
+
+POSIX_LIBS=$(NT_LIBS) $(BASEDIR)\public\sdk\lib\*\libcpsx.lib \
+ $(BASEDIR)\public\sdk\lib\*\psxdll.lib \
+ $(BASEDIR)\public\sdk\lib\*\psxrtl.lib
+
+!ifndef SUBSYSTEM_VERSION
+! ifndef EXPECTED_WINVER
+! ifdef CAIRO_PRODUCT
+SUBSYSTEM_WINVER = ,4.00
+! else
+SUBSYSTEM_WINVER = ,3.51
+! endif
+! else
+SUBSYSTEM_WINVER = ,$(EXPECTED_WINVER)
+! endif
+SUBSYSTEM_CONVER = ,3.51
+SUBSYSTEM_OS2VER =
+SUBSYSTEM_POSIXVER =
+SUBSYSTEM_NATVER = ,3.51
+!else
+SUBSYSTEM_WINVER = ,$(SUBSYSTEM_VERSION)
+SUBSYSTEM_CONVER = ,$(SUBSYSTEM_VERSION)
+SUBSYSTEM_OS2VER = ,$(SUBSYSTEM_VERSION)
+SUBSYSTEM_POSIXVER = ,$(SUBSYSTEM_VERSION)
+SUBSYSTEM_NATVER = ,$(SUBSYSTEM_VERSION)
+!endif
+
+!IF "$(UMTYPE)" == "nt"
+SUBSYSTEM=native$(SUBSYSTEM_NATVER)
+UMINCL=$(BASEDIR)\public\sdk\inc\crt
+
+
+STD_CALL_ENTRY=1
+UMENTRY=-entry:NtProcessStartup
+
+UMLIBS=$(UMLIBS) $(NT_LIBS) $(NT_CRT) $(CRT_LIBS)
+
+!ELSE
+! IF "$(UMTYPE)" == "windows"
+SUBSYSTEM=windows$(SUBSYSTEM_WINVER)
+UMINCL=$(BASEDIR)\public\sdk\inc\crt
+
+! IF "$(UMENTRY)" == "winmain"
+UMENTRY=-entry:WinMainCRTStartup
+! ELSE
+! IF "$(UMENTRYABS)" == ""
+UMENTRY=-entry:mainCRTStartup
+! ELSE
+UMENTRY=-entry:$(UMENTRYABS)
+! ENDIF
+! ENDIF
+
+#UMLIBS=$(UMLIBS) $(WIN32_LIBS) $(GUI32_LIBS)
+
+! ELSE
+! IF "$(UMTYPE)" == "console"
+SUBSYSTEM=console$(SUBSYSTEM_CONVER)
+UMINCL=$(BASEDIR)\public\sdk\inc\crt
+
+! IF "$(UMENTRY)" == "winmain"
+UMENTRY=-entry:WinMainCRTStartup
+! ELSE
+UMENTRY=-entry:mainCRTStartup
+! ENDIF
+
+UMLIBS=$(UMLIBS) $(WIN32_LIBS)
+
+! ELSE
+! IF "$(UMTYPE)" == "ntss"
+SUBSYSTEM=native$(SUBSYSTEM_NATVER)
+UMINCL=$(BASEDIR)\public\sdk\inc\crt
+
+STD_CALL_ENTRY=1
+UMENTRY=-entry:NtProcessStartup
+
+UMLIBS=$(UMLIBS) $(NTSS_LIBS) $(CRT_LIBS)
+
+! ELSE
+! IF "$(UMTYPE)" == "os2"
+SUBSYSTEM=os2$(SUBSYSTEM_OS2VER)
+UMINCL=$(BASEDIR)\public\sdk\inc\os2;$(BASEDIR)\public\sdk\inc\crt
+
+STD_CALL_ENTRY=1
+UMENTRY=-entry:NtProcessStartup
+
+UMLIBS=$(UMLIBS) $(OS2_LIBS)
+
+! ELSE
+! IF "$(UMTYPE)" == "posix"
+SUBSYSTEM=posix$(SUBSYSTEM_POSIXVER)
+UMINCL=$(BASEDIR)\public\sdk\inc\posix;$(BASEDIR)\public\sdk\inc\crt
+
+UMENTRY=-entry:__PosixProcessStartup
+
+UMLIBS=$(UMLIBS) $(POSIX_LIBS)
+
+! ELSE
+! ERROR Invalid UMTYPE value - $(UMTYPE)
+! ENDIF # UMTYPE == posix
+! ENDIF # UMTYPE == os2
+! ENDIF # UMTYPE == ntss
+! ENDIF # UMTYPE == console
+! ENDIF # UMTYPE == windows
+!ENDIF # UMTYPE == nt
+
+
+#
+# If you edit this line you need to modify $(BASEDIR)\private\sdktools\build\build.c
+#
+
+!IFDEF NTINCPATH
+NTINCLUDES=$(BASEDIR)\public\oak\inc;$(NTINCPATH)\$(TARGET_DIRECTORY)\inc
+!ELSE
+NTINCLUDES=$(BASEDIR)\public\oak\inc;$(BASEDIR)\public\sdk\inc
+!ENDIF
+
+!IFNDEF COMPILER_WARNINGS
+COMPILER_WARNINGS=-FI$(BASEDIR)\public\sdk\inc\warning.h
+!ENDIF
+
+!IFDEF CAIRO_PRODUCT
+NTINCLUDES=$(BASEDIR)\private\cinc;$(BASEDIR)\public\sdk\inc\cairo;$(NTINCLUDES)
+!IFDEF NOT_UNICODE
+WIN32_DEFINE=-DWIN32=300 -D_CAIRO_=300
+!ELSE
+WIN32_DEFINE=-DWIN32=300 -D_CAIRO_=300 -DUNICODE -D_UNICODE
+!ENDIF
+
+!ELSE
+
+!IFDEF CHICAGO_PRODUCT
+NTINCLUDES=$(BASEDIR)\private\cinc;$(BASEDIR)\public\sdk\inc\chicago;$(BASEDIR)\public\sdk\inc\chicago\crt;$(NTINCLUDES)
+WIN32_DEFINE=-DWIN32=200 -DFLAT -D_CHICAGO_=200
+
+LINKER_FLAGS=$(LINKER_FLAGS) -map
+
+!ELSE
+WIN32_DEFINE=-DWIN32=100 -D_NT1X_=100
+CAIRO_LIB_PATH=$(BASEDIR)\public\sdk\lib
+!ENDIF
+
+!ENDIF
+
+INCLUDES =$(INCLUDES: =)
+NTINCLUDES =$(NTINCLUDES: =)
+UMINCL =$(UMINCL: =)
+
+!IFDEF USER_INCLUDES
+USER_INCLUDES =$(USER_INCLUDES: =)
+USER_INCL0=-I$(USER_INCLUDES)
+USER_INCL1=-I$(USER_INCLUDES)
+!ELSE
+USER_INCL0=
+USER_INCL1=
+!ENDIF
+
+!IFDEF INCLUDES
+INCL=$(INCLUDES)
+INCPATH0=$(USER_INCL0:;= -I) -I$(INCL:;= -I) -I$(NTINCLUDES:;= -I) -I$(UMINCL:;= -I)
+INCPATH1=$(USER_INCL1:;= -I) -I$(INCL:;= -I) -I$(NTINCLUDES:;= -I) -I$(UMINCL:;= -I)
+!ELSE
+INCPATH0=$(USER_INCL0:;= -I) -I$(NTINCLUDES:;= -I) -I$(UMINCL:;= -I)
+INCPATH1=$(USER_INCL1:;= -I) -I$(NTINCLUDES:;= -I) -I$(UMINCL:;= -I)
+!ENDIF
+
+INCPATH0=$(INCPATH0:-I =)
+INCPATH1=$(INCPATH1:-I =)
+
+!IFDEF MFC_INCLUDES
+MFC_INCLUDES=$(MFC_INCLUDES: =)
+MFC_INCLUDES=-I$(MFC_INCLUDES:;= -I)
+INCPATH0=$(MFC_INCLUDES) $(INCPATH0)
+INCPATH1=$(MFC_INCLUDES) $(INCPATH1)
+!ENDIF
+
+!IFNDEF RELATIVE_DEPTH
+RELATIVE_DEPTH=..\..
+!ENDIF
+
+!IFNDEF DLLENTRY
+DLLENTRY=-noentry
+!ELSE
+DLLENTRY=-entry:$(DLLENTRY)
+!ENDIF
+
+!IFNDEF DLLBASE
+DLLBASE=@$(BASEDIR)\PUBLIC\SDK\LIB\coffbase.txt,$(TARGETNAME)
+!ENDIF
+
+!IFNDEF DLLDEF
+DLLDEF=$(@B).def
+!ENDIF
+
+!IFNDEF BOOTBASE
+! IFDEF FRAZZLE
+BOOTBASE=0xd0100000,0xd0104000
+! ELSE
+BOOTBASE=0xd0ff0000,0xd0ff4000
+! ENDIF
+!ENDIF
+
+DRIVERBASE=0x10000
+HALBASE=0x80400000
+
+#
+# Map lower case to upper case for variables that can be specified from the
+# command line.
+#
+
+!IFDEF nttest
+NTTEST=$(nttest)
+!ENDIF
+
+!IFDEF makedll
+MAKEDLL=$(makedll)
+!ENDIF
+
+!IFDEF umtest
+UMTEST=$(umtest)
+!ENDIF
+
+
+#
+# Include the list of object files (defined as the OBJECTS macro) that was
+# built by BUILD program, using the SOURCES= macro defined in the sources.
+# file. Use macro substitution to build the supported target objects.
+#
+
+!INCLUDE obj\_objects.mac
+
+!IF $(386)
+OBJECTS=$(386_OBJECTS)
+DLLLIBOBJECTS=$(386_DLLLIBOBJECTS)
+!ELSEIF $(MIPS)
+OBJECTS=$(MIPS_OBJECTS)
+DLLLIBOBJECTS=$(MIPS_DLLLIBOBJECTS)
+!ELSEIF $(ALPHA)
+OBJECTS=$(ALPHA_OBJECTS)
+DLLLIBOBJECTS=$(ALPHA_DLLLIBOBJECTS)
+!ELSEIF $(PPC)
+OBJECTS=$(PPC_OBJECTS)
+DLLLIBOBJECTS=$(PPC_DLLLIBOBJECTS)
+!ENDIF
+
+#
+# BUILD.EXE defines the NOLINK variable to disable the building of any
+# test executables when it is recursing on a dirs. file to build components
+# in subdirectories.
+#
+
+!IF "$(BUILDMSG)" != "Stop."
+! IFDEF NOLINK
+! UNDEF NTTEST
+! UNDEF MAKEDLL
+! ELSE
+! IFDEF nolink
+! UNDEF NTTEST
+! UNDEF MAKEDLL
+! ENDIF
+! ENDIF # DEF NOLINK
+!ENDIF # BUILDMSG != "Stop."
+
+
+#
+# Determine type of target link we are doing
+#
+!IF "$(TARGETTYPE)" == "PROGLIB"
+TARGETEXT=exe
+TARGETLIB=
+!ELSE
+! IF "$(TARGETTYPE)" == "PROGRAM"
+TARGETEXT=exe
+TARGETLIB=
+! ELSE
+! IF "$(TARGETTYPE)" == "DYNLINK"
+
+DYNLINK_LIB=$(TARGETPATH)\*\$(TARGETNAME).lib
+
+! IF "$(MAKEDLL)" != ""
+! IF "$(UMTYPE)" == "os2"
+TARGETLIB=$(BASEDIR)\public\sdk\lib\*\ntdll.lib
+! ELSE
+! IF "$(UMTYPE)" == "posix"
+TARGETLIB=$(BASEDIR)\public\sdk\lib\*\libcpsx.lib $(BASEDIR)\public\sdk\lib\*\ntdll.lib $(CRT_LIBS)
+! ELSE
+! IF "$(TARGETNAME)" == "ntdll"
+TARGETLIB=
+! ELSE
+! IFDEF USE_CRTDLL
+! IFDEF CHICAGO_PRODUCT
+TARGETLIB=$(WIN32DLL_LIBS) $(BASEDIR)\public\sdk\lib\*\crtdll.lib
+! ELSE
+TARGETLIB=$(WIN32DLL_LIBS) $(BASEDIR)\public\sdk\lib\*\crtdll.lib $(BASEDIR)\public\sdk\lib\*\ntdll.lib
+! ENDIF
+! ELSE
+! IFDEF USE_MSVCRT
+TARGETLIB=$(WIN32DLL_LIBS) $(LIBC_LIB)
+! ELSE
+TARGETLIB=$(WIN32DLL_LIBS) $(BASEDIR)\public\sdk\lib\*\ntdll.lib $(CRT_LIBS)
+! ENDIF
+! ENDIF
+! ENDIF
+! ENDIF
+! ENDIF
+! IF "$(TARGETEXT)" == ""
+TARGETEXT=dll
+! ENDIF
+! IFDEF CAIROLIB
+
+#
+# If we are linking a DLL then add in the cairo libs.
+#
+
+TARGETLIB=$(CAIROLIB) $(TARGETLIB)
+! ENDIF
+! IFDEF CAIRO_PRODUCT
+! IFNDEF TUKWILA
+TARGETLIB=$(TARGETLIB:lib\*\ntdll.lib=lib\cairo\*\ntdll.lib)
+! ENDIF
+! ENDIF
+! ELSE # "$(MAKEDLL)" != ""
+TARGETEXT=lib
+TARGETLIB=
+! ENDIF # "$(MAKEDLL)" != ""
+! ELSE
+! IF "$(TARGETTYPE)" == "LIBRARY"
+TARGETEXT=lib
+TARGETLIB=
+! ELSE
+! IF "$(TARGETTYPE)" == "DRIVER"
+TARGETEXT=sys
+TARGETLIB=$(BASEDIR)\public\sdk\lib\*\ntoskrnl.lib $(BASEDIR)\public\sdk\lib\*\hal.lib $(CRT_LIBS)
+! ELSE
+! IF "$(TARGETTYPE)" == "EXPORT_DRIVER"
+! IF "$(MAKEDLL)" != ""
+TARGETEXT=sys
+TARGETLIB=$(BASEDIR)\public\sdk\lib\*\ntoskrnl.lib $(BASEDIR)\public\sdk\lib\*\hal.lib $(CRT_LIBS)
+! ELSE
+TARGETEXT=lib
+TARGETLIB=
+! ENDIF
+! ELSE
+! IF "$(TARGETTYPE)" == "HAL"
+! IF "$(MAKEDLL)" != ""
+TARGETEXT=dll
+TARGETLIB=$(BASEDIR)\public\sdk\lib\*\ntoskrnl.lib $(CRT_LIBS)
+! ELSE
+TARGETEXT=lib
+TARGETLIB=
+! ENDIF
+! ELSE
+! IF "$(TARGETTYPE)" == "BOOTPGM"
+TARGETEXT=sys
+! ELSE
+! IF "$(TARGETTYPE)" == "MINIPORT"
+TARGETEXT=sys
+! ELSE
+! IF "$(TARGETTYPE)" == "GDI_DRIVER"
+TARGETEXT=dll
+TARGETLIB=$(BASEDIR)\public\sdk\lib\km\*\win32k.lib
+! ENDIF # TARGETTYPE == GDI_DRIVER
+! ENDIF # TARGETTYPE == MINIPORT
+! ENDIF # TARGETTYPE == BOOTPGM
+! ENDIF # TARGETTYPE == HAL
+! ENDIF # TARGETTYPE == EXPORT_DRIVER
+! ENDIF # TARGETTYPE == DRIVER
+! ENDIF # TARGETTYPE == LIBRARY
+! ENDIF # TARGETTYPE == DYNLINK
+! ENDIF # TARGETTYPE == PROGRAM
+!ENDIF # TARGETTYPE == PROGLIB
+
+
+TARGET=
+
+!IF "$(TARGETTYPE)" != "UMAPPL_NOLIB"
+
+! IF "$(OBJECTS)" != ""
+TARGET=$(TARGETPATH)\*\$(TARGETNAME).$(TARGETEXT)
+! ENDIF
+
+!ENDIF # TARGETTYPE != UMAPPL_NOLIB
+
+!IFNDEF MACHINE_TARGETLIBS
+MACHINE_TARGETLIBS=$(TARGETLIB) $(TARGETLIBS)
+!ENDIF
+
+
+TARGETOBJFILES=$(TARGETOBJFILES) $(OBJECTS)
+
+!IF "$(NOLINK)" == "" || \
+ ("$(NOLINK)" != "" && ("$(TARGETTYPE)"=="LIBRARY" || \
+ ( ("$(TARGETTYPE)"=="DYNLINK" || \
+ "$(TARGETTYPE)"=="PROGLIB" || \
+ "$(TARGETTYPE)"=="EXPORT_DRIVER" || \
+ "$(TARGETTYPE)"=="HAL") && \
+ "$(MAKEDLL)" == "") \
+ ) \
+ )
+
+
+!IF "$(NOLINK)" != "" && "$(TARGET)" != ""
+TARGETLIBFILES=$(TARGETLIBFILES) $(TARGETPATH)\*\$(TARGETNAME).lib
+!ELSE
+TARGETEXEFILES=$(TARGETEXEFILES) $(TARGET)
+!ENDIF
+
+!ENDIF # NOLINK == "" || building .lib file for dll
+
+!IF "$(NTTEST)" != ""
+
+TARGETOBJFILES=$(TARGETOBJFILES) obj\*\$(NTTEST).obj
+
+! IFNDEF NOLINK
+
+TARGETEXEFILES=$(TARGETEXEFILES) obj\*\$(NTTEST).exe
+
+! ENDIF # NDEF NOLINK
+!ENDIF # NTTEST != ""
+
+UMOBJFILES=
+UMEXEFILES=
+
+!IF "$(UMAPPLEXT)" == ""
+! IFDEF _DOT_COM_FILE
+UMAPPLEXT=.com
+! ELSE
+UMAPPLEXT=.exe
+! ENDIF
+!ENDIF
+
+!IF "$(UMAPPL)" != ""
+
+UMOBJFILES=obj\*\$(UMAPPL:*=.obj obj\*\).obj
+
+
+! IF "$(UMAPPLEXT)" == ".com"
+! IFNDEF NOLINK
+
+UMEXEFILES=obj\*\$(UMAPPL:*=.com obj\*\).com
+! ENDIF
+! ELSE
+! IF "$(UMAPPLEXT)" == ".exe"
+! IFNDEF NOLINK
+
+UMEXEFILES=obj\*\$(UMAPPL:*=.exe obj\*\).exe
+! ENDIF
+! ELSE
+
+! IF "$(UMAPPLEXT)" == ".scr"
+! IFNDEF NOLINK
+
+UMEXEFILES=obj\*\$(UMAPPL:*=.scr obj\*\).scr
+
+! ENDIF
+
+! ELSE
+
+! ERROR Unsupport UMAPPLEXT = $(UMAPPLEXT)
+
+! ENDIF # UMAPPLEXT == .scr
+! ENDIF # UMAPPLEXT == .exe
+! ENDIF # UMAPPLEXT == .com
+!ENDIF # UMAPPL != ""
+
+!IF "$(UMTEST)" != ""
+
+UMOBJFILES=$(UMOBJFILES) obj\*\$(UMTEST:*=.obj obj\*\).obj
+
+! IFNDEF NOLINK
+
+UMEXEFILES=$(UMEXEFILES) obj\*\$(UMTEST:*=.exe obj\*\).exe
+
+! ENDIF
+!ENDIF
+
+#
+# Define NT_UP as 0 in environment to turn on MP.
+# If undefined or equal to 1, you get UP.
+#
+
+!IFNDEF NT_UP
+NT_UP=1
+!ENDIF
+
+!IF "$(NT_UP)"=="0"
+NT_UP_DEFINES=
+!ELSE
+NT_UP_DEFINES=-DNT_UP=1
+!ENDIF
+
+!IFNDEF NT_INST
+NT_INST=0
+!ENDIF
+
+!IFNDEF PNP_POWER
+PNP_POWER=0
+!ENDIF
+
+!IF "$(PNP_POWER)"=="0"
+NT_PNP_POWER_DEFINES=
+!ELSE
+NT_PNP_POWER_DEFINES=-D_PNP_POWER_=1
+!ENDIF
+
+
+#
+# User defined variables (environment variables or command line).
+# A cpu specific definition will take precedence over the MSC definition.
+#
+# xxx_WARNING_LEVEL
+# xxx_OPTIMIZATION
+# xxx_CPPFLAGS
+#
+
+!IFNDEF MSC_WARNING_LEVEL
+MSC_WARNING_LEVEL=/W3
+!ENDIF
+
+!IFNDEF MSC_OPTIMIZATION
+MSC_OPTFLAGS=/Oxs $(MSC_OPTIMIZATION)
+!ELSE
+MSC_OPTFLAGS=$(MSC_OPTIMIZATION)
+!ENDIF
+
+#
+# End of user defined variables.
+#
+
+!IFDEF NOT_LEAN_AND_MEAN
+STD_DEFINES=-DCONDITION_HANDLING=1 $(NT_UP_DEFINES) \
+ -DNT_INST=$(NT_INST) $(WIN32_DEFINE) $(NT_PNP_POWER_DEFINES)
+!ELSE
+STD_DEFINES=-DCONDITION_HANDLING=1 -DWIN32_LEAN_AND_MEAN=1 $(NT_UP_DEFINES) \
+ -DNT_INST=$(NT_INST) $(WIN32_DEFINE) $(NT_PNP_POWER_DEFINES)
+!ENDIF
+
+!IFNDEF CBSTRING
+!IF "$(MAJORCOMP)" == "ntos" || "$(MAJORCOMP)" == "NTOS"
+CBSTRING= -cbstring
+!ELSE
+CBSTRING=
+!ENDIF
+!ENDIF
+
+!IF "$(NTDEBUG)" == "retail"
+TARGET_DBG_DEFINES= -DDBG=0 -DDEVL=1
+DBGFLAGS=$(MSC_OPTFLAGS)
+!ELSE
+! IF "$(NTDEBUG)" == ""
+TARGET_DBG_DEFINES= -DDBG=0 -DDEVL=1
+DBGFLAGS=$(MSC_OPTFLAGS)
+! ELSE
+TARGET_DBG_DEFINES= -DDBG=1 -DDEVL=1
+!UNDEF NTLEGO
+! IF "$(NTDEBUG)" == "ntsd"
+DBGFLAGS=$(MSC_OPTFLAGS) /Zi
+! ELSE
+! IF "$(NTDEBUG)" == "cvp"
+DBGFLAGS=$(MSC_OPTFLAGS) /Zd
+! ELSE
+! IF "$(NTDEBUG)" == "sym"
+DBGFLAGS=$(MSC_OPTFLAGS) /Zd
+! ELSE
+! IF "$(NTDEBUG)" == "ntsdnodbg"
+DBGFLAGS=$(MSC_OPTFLAGS) /Zi
+TARGET_DBG_DEFINES= -DDBG=0 -DDEVL=1
+! ELSE
+! ERROR NTDEBUG macro can be either "retail", "", "ntsd", "cvp" or "sym" or "ntsdnodbg"
+! ENDIF
+! ENDIF # NTDEBUG == ntsdnodbg
+! ENDIF # NTDEBUG == sym
+! ENDIF # NTDEBUG == cvp
+! ENDIF # NTDEBUG == ""
+!ENDIF # NTDEBUG == retail
+
+!IF "$(NTDEBUGTYPE)" == "windbg"
+LINKER_DBG_TYPE = -debugtype:cv
+!ELSE
+! IF "$(NTDEBUGTYPE)" == "ntsd" || "$(NTDEBUGTYPE)" == "coff"
+LINKER_DBG_TYPE = -debugtype:coff
+! ELSE
+! IF "$(NTDEBUGTYPE)" == "both"
+LINKER_DBG_TYPE = -debugtype:both
+! ELSE
+! IF "$(NTDEBUGTYPE)" == ""
+LINKER_DBG_TYPE = -debugtype:coff
+! ELSE
+! ERROR NTDEBUGTYPE macro can one of "", "ntsd", "coff", "windbg" or "both"
+! ENDIF
+! ENDIF
+! ENDIF
+!ENDIF
+
+
+!IF "$(PRECOMPILED_OPTION)" == ""
+! IF "$(PRECOMPILED_INCLUDE)" != ""
+! IF "$(PRECOMPILED_INCLUDE)" != "$(PRECOMPILED_INCLUDE:.hxx=)"
+PRECOMPILED_CXX=1
+! ENDIF
+! IF "$(PRECOMPILED_INCLUDE)" != "$(PRECOMPILED_INCLUDE:.cxx=)"
+PRECOMPILED_CXX=1
+! ENDIF
+! IF "$(PRECOMPILED_PCH)" == ""
+PRECOMPILED_PCH=$(PRECOMPILED_INCLUDE:.hxx=.pch)
+PRECOMPILED_PCH=$(PRECOMPILED_PCH:.h=.pch)
+PRECOMPILED_PCH=$(PRECOMPILED_PCH:.cxx=.pch)
+PRECOMPILED_PCH=$(PRECOMPILED_PCH:.c=.pch)
+PRECOMPILED_PCH=$(PRECOMPILED_PCH:..\=)
+! ENDIF
+! IF "$(PRECOMPILED_OBJ)" == ""
+PRECOMPILED_OBJ=$(PRECOMPILED_PCH:.pch=.obj)
+! ENDIF
+! ENDIF
+!ENDIF
+
+! IF "$(PRECOMPILED_OPTION)" == ""
+! IF "$(PRECOMPILED_INCLUDE)" != ""
+! IF "$(PRECOMPILED_PCH)" != ""
+HEADERFILE=/Fpobj\*\$(PRECOMPILED_PCH)
+! ENDIF
+! IF "$(PRECOMPILED_OBJ)" != ""
+HEADEROBJNAME=obj\*\$(PRECOMPILED_OBJ)
+HEADEROBJ=/Fo$(MAKEDIR)\$(HEADEROBJNAME)
+! ENDIF
+! IF "$(PRECOMPILED_CXX)" == ""
+PRECOMPILED=/Yu$(PRECOMPILED_INCLUDE:..\=) $(HEADERFILE)
+PRECOMPILED_CXX=
+! ELSE
+PRECOMPILED=
+PRECOMPILED_CXX=/Yu$(PRECOMPILED_INCLUDE:..\=) $(HEADERFILE)
+! ENDIF
+PRECOMPILED_TARGET=obj\*\$(PRECOMPILED_PCH)
+! ELSE
+! IF "$(PRECOMPILED_INCLUDE)" != ""
+! IF "$(PRECOMPILED_CXX)" == ""
+PRECOMPILED=/Yu$(PRECOMPILED_INCLUDE)
+PRECOMPILED_CXX=
+! ELSE
+PRECOMPILED=
+PRECOMPILED_CXX=/Yu$(PRECOMPILED_INCLUDE)
+! ENDIF
+! ENDIF
+! ENDIF
+! ELSE
+! IF "$(PRECOMPILED_CXX)" == ""
+PRECOMPILED=$(PRECOMPILED_OPTION)
+PRECOMPILED_CXX=
+! ELSE
+PRECOMPILED=
+PRECOMPILED_CXX=$(PRECOMPILED_OPTION)
+! ENDIF
+PRECOMPILED_TARGET=$(PRECOMPILED_TARGET)
+! IF "$(PRECOMPILED_TARGET)" != ""
+HEADERFILE=/Fp$(PRECOMPILED_TARGET)
+! ENDIF
+! IF "$(PRECOMPILED_OBJ)" != ""
+HEADEROBJNAME=$(PRECOMPILED_OBJ)
+HEADEROBJ=/Fo$(HEADEROBJNAME)
+! ENDIF
+! ENDIF
+
+!IF ("$(PRECOMPILED_CXX)" == "") && ("$(USECXX_FLAG)" == "")
+PRECOMPILED_FLAG=/Tc
+!ELSE
+PRECOMPILED_FLAG=/Tp
+!ENDIF
+
+!IF "$(NTNOPCH)" != ""
+PRECOMPILED=
+PRECOMPILED_CXX=
+!ENDIF
+
+#
+# Set linker options
+#
+
+#
+# Merge _PAGE with PAGE, _TEXT with .text, and make sure
+# INIT sections are discardable
+#
+
+LINK_LIB_IGNORE_FLAG=-IGNORE:4001,4037,4039,4065,4070,4078,4087,4089
+LINKER_FLAGS = $(LINKER_FLAGS) \
+ -MERGE:_PAGE=PAGE \
+ -MERGE:_TEXT=.text \
+ -SECTION:INIT,d \
+ -OPT:REF \
+ -RELEASE \
+ -INCREMENTAL:NO \
+ -FULLBUILD \
+ -FORCE:MULTIPLE \
+ -NODEFAULTLIB \
+ $(LINK_LIB_IGNORE_FLAG)
+
+LINKER_MERGE_RDATA=-MERGE:.rdata=.text
+LINKER_OPTIDATA=-optidata
+
+!if "$(USE_PDB)" == ""
+LINKER_FLAGS = $(LINKER_FLAGS) -PDB:NONE
+!elseif ("$(PDB_ROOT)" != "") && ("$(CAIRO_PRODUCT)" == "")
+LINKER_FLAGS = $(LINKER_FLAGS) -PDB:$(PDB_ROOT)\$(TARGETEXT)^\
+PDB_ROOTUM = -PDB:$(PDB_ROOT)\$(UMAPPLEXT:.=)^\
+!elseif ("$(CAIROPDB_ROOT)" != "") && ("$(CAIRO_PRODUCT)" != "")
+LINKER_FLAGS = $(LINKER_FLAGS) -PDB:$(CAIROPDB_ROOT)\$(TARGETEXT)^\
+PDB_ROOTUM = -PDB:$(CAIROPDB_ROOT)\$(UMAPPLEXT:.=)^\
+!endif
+
+!IF "$(NTDEBUG)" == "ntsd" || "$(NTDEBUG)" == "ntsdnodbg"
+! IF "$(PERFFLAGS)" != ""
+LINKER_DBG_SECTION=-debug:mapped,FULL
+! ELSE
+LINKER_DBG_SECTION=-debug:notmapped,FULL
+! ENDIF # PERFFLAGS != NULL
+!ELSE
+! IF "$(NTDEBUG)" == "retail"
+LINKER_DBG_SECTION=-debug:NONE
+! ELSE
+! IF "$(PERFFLAGS)" != ""
+LINKER_DBG_SECTION=-debug:mapped,MINIMAL
+! ELSE
+LINKER_DBG_SECTION=-debug:notmapped,MINIMAL
+! ENDIF # PERFFLAGS != NULL
+! ENDIF # NTDEBUG == retail
+!ENDIF # NTDEBUG == ntsd
+
+!IF "$(NTLEANANDMEAN)" == "leanandmean"
+! IF "$(NTDEBUGTYPE)" == "coff" || \
+ "$(NTTEST)"=="ntoskrnl" || \
+ "$(NTTEST)"=="ntkrnlmp" || \
+ "$(TARGETTYPE)"=="DRIVER" || \
+ "$(TARGETTYPE)"=="MINIPORT" || \
+ "$(TARGETTYPE)"=="EXPORT_DRIVER" || \
+ "$(TARGETTYPE)"=="HAL"
+LINKER_DBG_SECTION=-debug:notmapped,minimal
+! ELSE
+LINKER_DBG_SECTION=-debug:none
+! ENDIF # NTDEBUGTYPE != coff || TARGETTYPE
+!ENDIF # NTLEANANDMEAN == leanandmean
+
+LINK_OS_VERSIONS = -version:3.51 -osversion:3.51
+
+LINKER_FLAGS = $(LINKER_FLAGS) $(LINKER_DBG_SECTION) $(LINKER_DBG_TYPE) $(LINK_OS_VERSIONS)
+LIBRARIAN_FLAGS = $(LIBRARIAN_FLAGS) $(LINK_LIB_IGNORE_FLAG)
+
+LIBRARIAN=lib -out:$@ $(LIBRARIAN_FLAGS) $(LINKER_DBG_TYPE) -machine:$(TARGET_DIRECTORY)
+LINKER=link -out:$@ -machine:$(TARGET_DIRECTORY)
+
+!IFDEF EXEPROFILEINPUT
+EXEORDER=-order:@$(@B).prf
+!ENDIF
+
+!IFNDEF DRIVER_ALIGNMENT
+DRIVER_ALIGNMENT=0x20
+!ENDIF
+
+!ifndef HAL_ALIGNMENT
+HAL_ALIGNMENT=0x20
+!endif
+
+!ifndef KERNEL_ALIGNMENT
+KERNEL_ALIGNMENT=0x40
+!endif
+
+#
+# Standard inference rules for C files that produce object files.
+#
+
+.SUFFIXES: .cxx .cpp .c .f .rc .s .asm .obj .exe .res .p .tdl .odl
+
+#
+# Processor specific control and options.
+#
+
+!include $(TARGET_DIRECTORY)mk.inc
+
+LINKER_FLAGS = $(LINKER_FLAGS) $(LINKER_MERGE_RDATA)
+
+#
+# Clear the suffixes list so we can ensure only pass zero stuff will be built
+#
+!IFDEF PASS0ONLY
+.SUFFIXES:
+!ENDIF
+
+#
+# If NTDBGFILES is defined then use binplace to split the symbols.
+# Define BINPLACE flags as needed if separate .DBG file requested.
+#
+
+!IFDEF NTDBGFILES
+BINPLACE_FLAGS=-s $(_NTTREE)\Symbols $(BINPLACE_FLAGS)
+!ENDIF
+
+!IFDEF _NTTREE
+! IFDEF _WIN95TREE
+! IFDEF NTDBGFILES
+BINPLACE_FLAGS95=$(BINPLACE_FLAGS) -s $(_WIN95TREE)\Symbols
+! ENDIF
+BINPLACE_CMD=binplace -R $(_WIN95TREE) $(BINPLACE_FLAGS95) $@\
+ & binplace -R $(_NTTREE) $(BINPLACE_FLAGS) $@
+! ELSE
+BINPLACE_CMD=binplace -R $(_NTTREE) $(BINPLACE_FLAGS) $@
+! ENDIF
+!ELSE
+BINPLACE_CMD=
+!ENDIF
+
+!ifdef NTDUMPAMAP
+MAPDUMP_CMD = link -dump -map $@ | sort /R /+62 > $(_NTDUMPAMAP)\$(@B).srt
+!else
+MAPDUMP_CMD =
+!endif
+
+
+#
+# Define this macro so including make files can supply a yes prompt
+# as appropriate. Put the "yes." file in a visible place for OEM's
+# so they can make too.
+#
+
+YESRESP=$(BASEDIR)\PUBLIC\OAK\INC\yes.
+
+!IFNDEF NOPASS0
+
+#
+# Pass Zero Inference Rules: IDL files (MIDL) and MC files
+#
+
+.SUFFIXES: .idl .mc
+
+!IF $(386)
+PASS0_OBJECTS=$(PASS0_386_OBJECTS)
+!ELSEIF $(MIPS)
+PASS0_OBJECTS=$(PASS0_MIPS_OBJECTS)
+!ELSEIF $(ALPHA)
+PASS0_OBJECTS=$(PASS0_ALPHA_OBJECTS)
+!ELSEIF $(PPC)
+PASS0_OBJECTS=$(PASS0_PPC_OBJECTS)
+!ENDIF
+
+!ENDIF # IFNDEF NOPASS0
+
+MIDL = midl
+MKTYPLIB = mktyplib
+!IFDEF USE_OLE_MC
+MC = mc -o
+!ELSE
+MC = mc
+!ENDIF
+
+!IF "$(IDL_TYPE)" == "ole" || "$(IDL_TYPE)" == ""
+IDL_TYPE=OLE
+!ELSEIF "$(IDL_TYPE)" == "rpc"
+IDL_TYPE=RPC
+!ENDIF
+
+!IFNDEF PASS0_HEADERDIR
+PASS0_HEADERDIR=$(TARGETPATH)
+!ENDIF
+
+!IFNDEF MIDL_OPTIMIZATION
+MIDL_OPTIMIZATION=-Oi1
+!ENDIF
+
+!IF "$(IDL_TYPE)" == "OLE"
+
+!IF DEFINED(PASS0_CLIENTDIR) || DEFINED(PASS0_SERVERDIR)
+!ERROR PASS0_CLIENTDIR and PASS0_SERVERDIR can only be used with IDL_TYPE=RPC!
+!ENDIF
+
+!IFNDEF PASS0_SOURCEDIR
+PASS0_SOURCEDIR=$(TARGETPATH)
+!ENDIF
+
+!IFNDEF MIDL_UUIDDIR
+MIDL_UUIDDIR=$(PASS0_SOURCEDIR)
+!ENDIF
+
+!IFNDEF NO_PASS0_RULES
+.idl{$(PASS0_HEADERDIR)}.h:
+ $(MIDL) \
+ -Zp8 \
+ $(INCPATH0) \
+ -char unsigned \
+ -ms_ext -c_ext \
+ -proxy $(PASS0_SOURCEDIR)\$(<:.idl=_p.c) \
+ -dlldata $(PASS0_SOURCEDIR)\dlldata.c \
+ -iid $(MIDL_UUIDDIR)\$(<:.idl=_i.c) \
+ -header $(PASS0_HEADERDIR)\$(<:.idl=.h) \
+ -cpp_cmd $(TARGET_CPP) \
+ $(C_DEFINES) \
+ $(MIDL_FLAGS) \
+ $(MIDL_OPTIMIZATION) \
+ $<
+!ENDIF
+
+!ELSEIF "$(IDL_TYPE)" == "RPC"
+
+!IF DEFINED(PASS0_SOURCEDIR) || DEFINED(MIDL_UUIDDR)
+!ERROR PASS0_SOURCEDIR and MIDL_UUIDDIR can only be used with IDL_TYPE=OLE!
+!ENDIF
+
+!IFNDEF PASS0_CLIENTDIR
+PASS0_CLIENTDIR=$(TARGETPATH)
+!ENDIF
+
+!IFNDEF PASS0_SERVERDIR
+PASS0_SERVERDIR=$(PASS0_CLIENTDIR)
+!ENDIF
+
+!IFNDEF NO_PASS0_RULES
+.idl{$(PASS0_HEADERDIR)}.h:
+ $(MIDL) \
+ -Zp8 \
+ $(INCPATH0) \
+ -char unsigned \
+ -ms_ext -c_ext \
+ -cstub $(PASS0_CLIENTDIR)\$(<:.idl=_c.c) \
+ -sstub $(PASS0_SERVERDIR)\$(<:.idl=_s.c) \
+ -cpp_cmd $(TARGET_CPP) \
+ $(C_DEFINES) \
+ $(MIDL_FLAGS) \
+ $(MIDL_OPTIMIZATION) \
+ $<
+!ENDIF
+
+!ELSE
+
+!ERROR Invalid IDL_TYPE value. Supported values: OLE and RPC.
+
+!ENDIF # IDL_TYPE
+
+
+!IFNDEF NO_PASS0_RULES
+
+!IFDEF PASS0_SOURCEDIR
+MC_SOURCEDIR=$(PASS0_SOURCEDIR)
+!ELSE
+MC_SOURCEDIR=$(PASS0_CLIENTDIR)
+!ENDIF
+
+.mc{$(PASS0_HEADERDIR)}.h:
+ $(MC) -h $(PASS0_HEADERDIR) -r $(MC_SOURCEDIR) $(MC_FLAGS) $<
+
+!IF "$(TARGET_CPP)" == "claxp"
+MKTYPLIB_CPP = cl
+!ELSE
+MKTYPLIB_CPP = $(TARGET_CPP)
+!ENDIF
+.odl{obj\$(TARGET_DIRECTORY)\}.tlb:
+ $(MKTYPLIB) \
+ $(INCPATH0) \
+ /tlb obj\$(TARGET_DIRECTORY)\$(<:.tdl=.tlb) \
+ -cpp_cmd $(MKTYPLIB_CPP) \
+ $(MKTYPLIB_FLAGS) \
+ $<
+ $(BINPLACE_CMD)
+
+.tdl{obj\$(TARGET_DIRECTORY)\}.tlb:
+ $(MKTYPLIB) \
+ $(INCPATH0) \
+ /tlb obj\$(TARGET_DIRECTORY)\$(<:.tdl=.tlb) \
+ -cpp_cmd $(MKTYPLIB_CPP) \
+ $(MKTYPLIB_FLAGS) \
+ $<
+ $(BINPLACE_CMD)
+
+!ENDIF
+
+#
+# Default language ID to US English (0x0409)
+#
+
+!IFDEF RCCODEPAGE
+RCOPTIONS=$(RCOPTIONS) -c $(RCCODEPAGE)
+!ENDIF
+
+RC_COMPILER=rc -l 409 $(RCOPTIONS)
+
+{..\}.rc{obj\$(TARGET_DIRECTORY)\}.res:
+ $(RC_COMPILER) -r -fo $(@R).tmp $(CDEFINES) -x $(INCPATH0) $<
+ @cvtres -$(TARGET_DIRECTORY) $(@R).tmp -r -o $@
+!IF "$(NTKEEPRESOURCETMPFILES)" == ""
+ @-erase $(@R).tmp
+!ENDIF
+
+{}.rc{obj\$(TARGET_DIRECTORY)\}.res:
+ $(RC_COMPILER) -r -fo $(@R).tmp $(CDEFINES) -x $(INCPATH0) $<
+ @cvtres -$(TARGET_DIRECTORY) $(@R).tmp -r -o $@
+!IF "$(NTKEEPRESOURCETMPFILES)" == ""
+ @-erase $(@R).tmp
+!ENDIF
+
+!IFNDEF NO_C_RULES
+
+ECHO_RSP = obj\$(TARGET_DIRECTORY)\echo.msg
+CL_RSP = obj\$(TARGET_DIRECTORY)\cl.rsp
+CLCOD_RSP = obj\$(TARGET_DIRECTORY)\clcod.rsp
+LINK_RSP = obj\$(TARGET_DIRECTORY)\lnk.rsp
+
+{..\}.cxx{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.cxx{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cpp{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.cpp{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cxx{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.cxx{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cpp{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.cpp{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cxx{}.cod:
+ @-erase $(CLCOD_RSP)
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<KEEP
+
+{..\}.cxx{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cpp{}.cod:
+ @-erase $(CLCOD_RSP)
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<KEEP
+
+{..\}.cpp{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cxx{}.cod:
+ @-erase $(CLCOD_RSP)
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<KEEP
+
+{}.cxx{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cpp{}.cod:
+ @-erase $(CLCOD_RSP)
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<KEEP
+
+{}.cpp{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.c{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(USECXX_FLAG) $(MAKEDIR)\..\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.c{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.c{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(USECXX_FLAG) $(MAKEDIR)\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.c{obj\$(TARGET_DIRECTORY)\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.c{}.cod:
+ @-erase $(CLCOD_RSP)
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\..\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<KEEP
+
+{..\$(TARGET_DIRECTORY)\}.c{}.cod:
+ @-erase $(CLCOD_RSP)
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<KEEP
+
+{..\}.c{}.pp:
+ $(C_COMPILER_NAME) @<<$(CL_RSP) /E $(USECXX_FLAG) $(MAKEDIR)\$< > $@
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.c{}.pp:
+ $(C_COMPILER_NAME) @<<$(CL_RSP) /E $(USECXX_FLAG) $(MAKEDIR)\$< > $@
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.c{}.cod:
+ @-erase $(CLCOD_RSP)
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<KEEP
+
+{$(TARGET_DIRECTORY)\}.c{}.cod:
+ @-erase $(CLCOD_RSP)
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<KEEP
+
+{}.c{}.pp:
+ $(C_COMPILER_NAME) @<<$(CL_RSP) /E $(USECXX_FLAG) $(MAKEDIR)\$< > $@
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.c{}.pp:
+ $(C_COMPILER_NAME) @<<$(CL_RSP) /E $(USECXX_FLAG) $(MAKEDIR)\$< > $@
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+!ENDIF # NO_C_RULES
+
+!IF "$(NTNOFUZZYLOOKUP)"=="1"
+LIBRARY_OBJS=
+!ENDIF
+
+#
+# Standard inference rule for generating machine specific def files.
+#
+
+.SUFFIXES: .def .src
+
+CPPXX = $(C_PREPROCESSOR_FLAGS:/Tc=)
+CPPXX = $(CPPXX:-Tc=)
+
+{..\}.src{obj\$(TARGET_DIRECTORY)}.def:
+ $(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+{}.src{obj\$(TARGET_DIRECTORY)}.def:
+ $(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+{..\}.def{obj\$(TARGET_DIRECTORY)}.def:
+ $(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+{}.def{obj\$(TARGET_DIRECTORY)}.def:
+ $(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+#
+# Standard inference rule for User Mode object files that produce User Mode
+# image files
+#
+
+{obj\$(TARGET_DIRECTORY)\}.obj{obj\$(TARGET_DIRECTORY)\}$(UMAPPLEXT):
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(PDB_ROOTUM)
+$(EXEORDER: =
+)
+$(LINKGPSIZE: =
+)
+$(LINKER_OPTIDATA)
+-base:$(UMBASE)
+-subsystem:$(SUBSYSTEM)
+$(UMENTRY)
+$(LINKFLAGS: =
+)
+$(UMRES: =
+)
+$<
+$(UMOBJS: =
+)
+$(UMLIBS: =
+)
+$(HEADEROBJNAME: =
+)
+$(CRTLIBS: =
+)
+$(LINKLIBS: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+
+#
+# Standard list of targets: all, clean and loc. all is the default target.
+#
+
+!IFNDEF PASS0ONLY
+
+all: obj\_objects.mac \
+ $(NTTARGETFILE0) \
+ $(PASS0_OBJECTS) \
+ $(PRECOMPILED_TARGET) \
+ $(HEADEROBJNAME) \
+ $(TARGETOBJFILES) \
+ $(TARGETLIBFILES) \
+ $(NTTARGETFILE1) \
+ $(TARGETEXEFILES) \
+ $(UMOBJFILES) \
+ $(UMEXEFILES) \
+ $(NTTARGETFILES) $(MISCFILES)
+!IFDEF MISCFILES
+! IFDEF _NTTREE
+ binplace -R $(_NTTREE) $(BINPLACE_FLAGS) $(MISCFILES)
+! ENDIF
+!ENDIF
+!IF "$(BUILDMSG)" != ""
+ @ech ; $(BUILDMSG) ;
+!ENDIF
+
+!ELSE # PASS0ONLY
+
+all: $(NTTARGETFILE0) \
+ $(PASS0_OBJECTS)
+!IF "$(BUILDMSG)" != ""
+ @ech ; $(BUILDMSG) ;
+!ENDIF
+
+!ENDIF # PASS0ONLY
+
+update:
+ @ech Updating library. ;
+
+obj\_objects.mac: $(SOURCES_USED)
+ @echo Rebuilding obj\_objects.mac from $(SOURCES_USED).
+ @build -Of >nul 2>&1
+ @echo obj\_objects.mac was rebuilt, please reinvoke NMAKE
+ @md \ >nul 2>nul
+
+loc:
+ @-loc *.h $(SOURCES)
+
+print:
+ @-ppr *.h $(SOURCES)
+
+!IFDEF NTTARGETFILES
+!INCLUDE .\makefile.inc
+!ELSE
+!IFDEF NTTARGETFILE0
+!INCLUDE .\makefile.inc
+!ELSE
+!IFDEF NTTARGETFILE1
+!INCLUDE .\makefile.inc
+!ENDIF
+!ENDIF
+!ENDIF
+
+!IF "$(PRECOMPILED_INCLUDE)" != ""
+$(PRECOMPILED_TARGET) $(HEADEROBJNAME): $(PRECOMPILED_INCLUDE)
+ @type <<
+$(ECHO_PRECOMPILED_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<< $(PRECOMPILED_FLAG)<<
+$(C_COMPILER_FLAGS: =
+) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)
+<<NOKEEP
+#include "$(?F)"
+<<NOKEEP
+!ENDIF
+
+!IFNDEF NOLINK
+
+!IF "$(UMTEST)" != "" || "$(UMAPPL)" != ""
+
+
+$(UMEXEFILES): $(UMLIBS) $(CRTLIBS) $(LINKLIBS)
+
+!ENDIF
+!ENDIF
+
+#
+# These dependencies produce the target binaries from the object files.
+# These will trigger the sources to object inference rules to generate the
+# object files.
+#
+
+!IF "$(TARGET)" != ""
+!IF "$(TARGETTYPE)"=="PROGLIB"
+$(TARGET:.exe=.lib) $(TARGET:.exe=.exp): $(DLLDEF) $(LIBRARY_OBJS)
+ -lib -out:$(@R).lib @<<
+$(LINK_LIB_IGNORE_FLAG)
+-machine:$(TARGET_DIRECTORY)
+-def:$(DLLDEF)
+-debugtype:cv
+-nodefaultlib
+$(LIBRARY_OBJS: =
+)
+<<NOKEEP
+$(TARGET): $(OBJECTS) $(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp $(UMRES) $(UMLIBS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(EXEORDER: =
+)
+$(LINKGPSIZE: =
+)
+$(LINKER_OPTIDATA)
+-subsystem:$(SUBSYSTEM)
+-base:$(UMBASE)
+$(UMENTRY: =
+)
+$(LINKFLAGS: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+
+!ELSEIF "$(TARGETTYPE)"=="PROGRAM"
+
+$(TARGET): $(UMRES) $(OBJECTS) $(CRTLIBS) $(UMLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+-subsystem:$(SUBSYSTEM)
+-base:$(UMBASE)
+$(LINKGPSIZE: =
+)
+$(UMENTRY: =
+)
+$(LINKFLAGS: =
+)
+$(LINKER_OPTIDATA)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+
+!ELSEIF "$(TARGETTYPE)"=="DYNLINK"
+
+!IF "$(DLLLIBOBJECTS)" == ""
+
+$(DYNLINK_LIB) $(DYNLINK_LIB:.lib=.exp): $(DLLDEF) $(LIBRARY_OBJS)
+ -lib -out:$(@R).lib @<<
+$(LINK_LIB_IGNORE_FLAG)
+-machine:$(TARGET_DIRECTORY)
+-def:$(DLLDEF)
+-debugtype:cv
+-nodefaultlib
+$(LIBRARY_OBJS: =
+)
+<<NOKEEP
+
+!ELSE # "$(DLLLIBOBJECTS)" == ""
+
+$(DYNLINK_LIB) $(DYNLINK_LIB:.lib=.exp): $(DLLDEF) $(LIBRARY_OBJS) $(DLLLIBOBJECTS)
+ -lib -out:$(@D)\tmp.lib @<<
+$(LINK_LIB_IGNORE_FLAG)
+-machine:$(TARGET_DIRECTORY)
+-def:$(DLLDEF)
+-debugtype:cv
+-nodefaultlib
+$(LIBRARY_OBJS: =
+)
+<<NOKEEP
+ erase $(@R).exp
+ ren $(@D)\tmp.exp $(@B).exp
+ -lib -out:$(@R).lib @<<
+$(LINK_LIB_IGNORE_FLAG)
+-machine:$(TARGET_DIRECTORY)
+$(@D)\tmp.lib
+$(DLLLIBOBJECTS: =
+)
+<<NOKEEP
+ -erase $(@D)\tmp.lib
+
+!ENDIF # "$(DLLLIBOBJECTS)" == ""
+
+!IF "$(MAKEDLL)" != ""
+
+!IFDEF DLLORDER
+XXXORDER=-order:@$(DLLORDER)
+!ENDIF
+
+!IFDEF NTPROFILEINPUT
+XXXORDER=-order:@$(@B).prf
+#XXXORDER=$(XXXORDER:obj\$(TARGET_DIRECTORY)\=)
+!ENDIF
+
+$(TARGET): $(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp $(OBJECTS) $(LINKLIBS) $(CRTLIBS) $(MACHINE_TARGETLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+-dll
+$(XXXORDER: =
+)
+$(LINKER_OPTIDATA)
+-base:$(DLLBASE)
+-subsystem:$(SUBSYSTEM)
+$(DLLENTRY: =
+)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+!ENDIF # "$(MAKEDLL)" != ""
+
+!ELSEIF "$(TARGETTYPE)"=="LIBRARY"
+
+$(TARGET): $(OBJECTS)
+ @-erase $@ >nul 2>nul
+ -$(LIBRARIAN) @<<
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+
+!ELSEIF "$(TARGETTYPE)"=="DRIVER" || \
+ "$(TARGETTYPE)"=="MINIPORT"
+
+!IFDEF NTPROFILEINPUT
+ORDER=-order:@$(@B).prf
+!ENDIF
+
+$(TARGET): $(OBJECTS) $(MACHINE_TARGETLIBS) $(CRTLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(ORDER: =
+)
+$(SECTION_INFO1)
+$(SECTION_INFO2)
+$(LINKER_OPTIDATA)
+-driver
+-align:$(DRIVER_ALIGNMENT)
+-subsystem:native$(SUBSYSTEM_NATVER)
+-base:$(DRIVERBASE)
+-entry:DriverEntry$(ENTRY_SUFFIX)
+-out:$(TARGET)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+!ELSEIF "$(TARGETTYPE)"=="GDI_DRIVER"
+
+!IFDEF NTPROFILEINPUT
+ORDER=-order:@$(@B).prf
+!ENDIF
+
+$(TARGET): $(OBJECTS) $(MACHINE_TARGETLIBS) $(CRTLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+-dll
+$(ORDER: =
+)
+$(SECTION_INFO1)
+$(SECTION_INFO2)
+$(LINKER_OPTIDATA)
+-driver
+-align:$(DRIVER_ALIGNMENT)
+-subsystem:native$(SUBSYSTEM_NATVER)
+-base:$(DRIVERBASE)
+-entry:DrvEnableDriver$(GDI_ENTRY_SUFFIX)
+-out:$(TARGET)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+!ELSEIF "$(TARGETTYPE)"=="EXPORT_DRIVER"
+
+!IFDEF NTPROFILEINPUT
+ORDER=-order:@$(@B).prf
+!ENDIF
+
+!IF "$(MAKEDLL)" == ""
+$(TARGET) $(TARGET:.lib=.exp): $(DLLDEF) $(OBJECTS) $(LINKLIBS)
+ -lib -out:$(@R).lib @<<
+-machine:$(TARGET_DIRECTORY)
+-def:$(DLLDEF)
+-debugtype:cv
+-nodefaultlib
+$(LINK_LIB_IGNORE_FLAG)
+$(OBJECTS)
+$(LINKLIBS)
+<<NOKEEP
+!ELSE
+$(TARGET:.sys=.lib) $(TARGET:.sys=.exp): $(DLLDEF) $(LIBRARY_OBJS)
+ -lib -out:$(@R).lib @<<
+-machine:$(TARGET_DIRECTORY)
+-def:$(DLLDEF)
+-debugtype:cv
+-nodefaultlib
+$(LINK_LIB_IGNORE_FLAG)
+$(LIBRARY_OBJS)
+<<NOKEEP
+$(TARGET): $(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp $(OBJECTS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(ORDER: =
+)
+$(LINKER_OPTIDATA)
+-driver
+-align:$(DRIVER_ALIGNMENT)
+-subsystem:native$(SUBSYSTEM_NATVER)
+-base:$(DRIVERBASE)
+-entry:DriverEntry$(ENTRY_SUFFIX)
+-out:$(TARGET)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+!ENDIF
+
+!ELSEIF "$(TARGETTYPE)"=="HAL"
+
+!IF "$(MAKEDLL)" == ""
+$(TARGET) $(TARGET:.lib=.exp): $(DLLDEF) obj\$(TARGET_DIRECTORY)\*.obj
+ -lib -out:$(@R).lib -machine:$(TARGET_DIRECTORY) @<<
+-def:$(DLLDEF)
+-debugtype:cv
+-nodefaultlib
+$(LINK_LIB_IGNORE_FLAG)
+obj\$(TARGET_DIRECTORY)\*.obj
+<<NOKEEP
+!ELSE
+$(TARGET:.dll=.lib) $(TARGET:.dll=.exp): $(DLLDEF) obj\$(TARGET_DIRECTORY)\*.obj
+ -lib -out:$(@R).lib -machine:$(TARGET_DIRECTORY) @<<
+-def:$(DLLDEF)
+-debugtype:cv
+-nodefaultlib
+$(LINK_LIB_IGNORE_FLAG)
+obj\$(TARGET_DIRECTORY)\*.obj
+<<NOKEEP
+
+$(TARGET): $(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp $(OBJECTS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(LINKER_OPTIDATA)
+-driver
+-align:$(HAL_ALIGNMENT)
+-subsystem:$(SUBSYSTEM)
+-base:$(HALBASE)
+-miscrdata
+-dll
+-entry:HalInitSystem$(ENTRY_SUFFIX)
+-out:$(TARGET)
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+!ENDIF
+
+!ELSEIF "$(TARGETTYPE)"=="BOOTPGM"
+
+$(TARGET): $(OBJECTS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+-driver
+-subsystem:$(SUBSYSTEM)
+-base:$(BOOTBASE)
+-entry:_start
+-map:$(@R).map
+$(LINKFLAGS: =
+)
+$(**: =
+)
+<<NOKEEP
+
+!ENDIF
+!ENDIF
+
+!IFNDEF NOLINK
+
+!IF "$(NTTEST)" != ""
+
+!IF "$(TARGETPATH)"=="..\..\mpobj"
+KERNEL_DIR=mpobj
+KERNEL_TYPE=mp
+!ELSE
+KERNEL_DIR=obj
+KERNEL_TYPE=up
+!ENDIF
+
+!IFDEF NTPROFILEINPUT
+ORDER=-order:@..\$(@B).prf
+!ENDIF
+
+obj\$(TARGET_DIRECTORY)\$(NTTEST).exe: $(NTRES) obj\$(TARGET_DIRECTORY)\$(NTTEST).obj \
+ $(RELATIVE_DEPTH)\$(KERNEL_DIR)\$(TARGET_DIRECTORY)\*.lib \
+ $(LINKLIBS) \
+ $(BASEDIR)\public\sdk\lib\$(TARGET_DIRECTORY)\hal.lib \
+ $(BASEDIR)\public\sdk\lib\$(TARGET_DIRECTORY)\ntoskrnl.exp \
+ $(BASEDIR)\public\sdk\lib\$(TARGET_DIRECTORY)\lsakrnlp.lib \
+ $(BASEDIR)\public\sdk\lib\$(TARGET_DIRECTORY)\libcntpr.lib
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(ORDER: =
+)
+$(LINKGPSIZE: =
+)
+$(NTTEST_LINK_OPTIONS: =
+)
+$(LINKER_OPTIDATA)
+-driver
+-align:$(KERNEL_ALIGNMENT)
+-subsystem:$(SUBSYSTEM)
+-miscrdata
+$(LINKFLAGS: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+!ENDIF
+!ENDIF
diff --git a/private/utils/ntbackup/exchange/build/makefile.plt b/private/utils/ntbackup/exchange/build/makefile.plt
new file mode 100644
index 000000000..aa5899f6c
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/makefile.plt
@@ -0,0 +1,142 @@
+#
+# If not defined, specify where to get incs and libs.
+#
+
+!IFNDEF _NTROOT
+_NTROOT=\nt
+!ENDIF
+
+!IFNDEF BASEDIR
+BASEDIR=$(_NTDRIVE)$(_NTROOT)
+!ENDIF
+
+#
+# If not defined, define the build message banner.
+#
+
+!IFNDEF BUILDMSG
+BUILDMSG=
+!ENDIF
+
+#
+# Determine which target is being built (i386, Mips or Alpha) and define
+# the appropriate target variables.
+#
+
+!IFNDEF 386
+386=0
+!ENDIF
+
+!IFNDEF MIPS
+MIPS=0
+!ENDIF
+
+!IFNDEF ALPHA
+ALPHA=0
+!ENDIF
+
+!IFNDEF PPC
+PPC=0
+!ENDIF
+
+#
+# Default to building for the i386 target, if no target is specified.
+#
+
+!IF !$(386)
+! IF !$(MIPS)
+! IF !$(ALPHA)
+! IF !$(PPC)
+! IFDEF NTMIPSDEFAULT
+MIPS=1
+! IFNDEF TARGETCPU
+TARGETCPU=MIPS
+! ENDIF
+! ELSE
+! IFDEF NTALPHADEFAULT
+ALPHA=1
+! IFNDEF TARGETCPU
+TARGETCPU=ALPHA
+! ENDIF
+! ELSE
+! IFDEF NTPPCDEFAULT
+PPC=1
+! IFNDEF TARGETCPU
+TARGETCPU=PPC
+! ENDIF
+! ELSE
+386=1
+! IFNDEF TARGETCPU
+TARGETCPU=I386
+! ENDIF
+! ENDIF
+! ENDIF
+! ENDIF
+! ENDIF
+! ENDIF
+! ENDIF
+!ENDIF
+
+#
+# Define the target platform specific information.
+#
+
+!if $(386)
+
+ASM_SUFFIX=asm
+ASM_INCLUDE_SUFFIX=inc
+
+TARGET_BRACES=
+TARGET_CPP=cl
+TARGET_DEFINES=-Di386 -D_X86_
+TARGET_DIRECTORY=i386
+TARGET_NTTREE=$(_NT386TREE)
+
+MIDL_CPP=$(TARGET_CPP)
+MIDL_FLAGS=$(TARGET_DEFINES) -D_WCHAR_T_DEFINED
+
+!elseif $(MIPS)
+
+ASM_SUFFIX=s
+ASM_INCLUDE_SUFFIX=h
+
+TARGET_BRACES=-B
+TARGET_CPP=cl
+TARGET_DEFINES=-DMIPS -D_MIPS_
+TARGET_DIRECTORY=mips
+TARGET_NTTREE=$(_NTMIPSTREE)
+
+MIDL_CPP=$(TARGET_CPP)
+MIDL_FLAGS=$(TARGET_DEFINES) -D_WCHAR_T_DEFINED
+
+!elseif $(ALPHA)
+
+ASM_SUFFIX=s
+ASM_INCLUDE_SUFFIX=h
+
+TARGET_BRACES=-B
+TARGET_CPP=cl
+TARGET_DEFINES=-DALPHA -D_ALPHA_
+TARGET_DIRECTORY=alpha
+TARGET_NTTREE=$(_NTALPHATREE)
+
+MIDL_CPP=$(TARGET_CPP)
+MIDL_FLAGS=$(TARGET_DEFINES) -D_WCHAR_T_DEFINED
+
+!elseif $(PPC)
+
+ASM_SUFFIX=s
+ASM_INCLUDE_SUFFIX=h
+
+TARGET_BRACES=-B
+TARGET_CPP=cl
+TARGET_DEFINES=-DPPC -D_PPC_
+TARGET_DIRECTORY=ppc
+TARGET_NTTREE=$(_NTPPCTREE)
+
+MIDL_CPP=$(TARGET_CPP)
+MIDL_FLAGS=$(TARGET_DEFINES) -D_WCHAR_T_DEFINED
+
+!else
+!error Must define the target as 386, mips, alpha or ppc.
+!endif
diff --git a/private/utils/ntbackup/exchange/build/mipsmk.inc b/private/utils/ntbackup/exchange/build/mipsmk.inc
new file mode 100644
index 000000000..a38682d5c
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/mipsmk.inc
@@ -0,0 +1,218 @@
+!IF 0
+
+Copyright (c) 1994 Microsoft Corporation
+
+Module Name:
+
+ mipsmk.inc
+
+Abstract:
+
+ This module contains the MIPs specific build controls. It is included
+ by makefile.def.
+
+Author:
+
+ Jeff Havens (jhavens) 13-Feb-1994
+
+Revision History:
+
+!ENDIF
+
+#
+# Mips option control
+#
+
+UMBASE=$(UMBASE:*=mips)
+UMLIBS=$(UMLIBS:*=mips)
+NTRES=$(NTRES:*=mips)
+UMRES=$(UMRES:*=mips)
+UMOBJS=$(UMOBJS:*=mips)
+LINKLIBS=$(LINKLIBS:*=mips)
+DLLBASE=$(DLLBASE:*=mips)
+DLLDEF=$(DLLDEF:*=mips)
+MACHINE_TARGETLIBS=$(MACHINE_TARGETLIBS:*=mips)
+TARGET=$(TARGET:*=mips)
+DYNLINK_LIB=$(DYNLINK_LIB:*=mips)
+TARGETEXEFILES=$(TARGETEXEFILES:*=mips)
+TARGETLIBFILES=$(TARGETLIBFILES:*=mips)
+TARGETOBJFILES=$(TARGETOBJFILES:*=mips)
+UMOBJFILES=$(UMOBJFILES:*=mips)
+UMEXEFILES=$(UMEXEFILES:*=mips)
+HEADERFILE=$(HEADERFILE:*=mips)
+HEADEROBJNAME=$(HEADEROBJNAME:*=mips)
+HEADEROBJ=$(HEADEROBJ:*=mips)
+PRECOMPILED=$(PRECOMPILED:*=mips)
+PRECOMPILED_CXX=$(PRECOMPILED_CXX:*=mips)
+PRECOMPILED_TARGET=$(PRECOMPILED_TARGET:*=mips)
+
+!ifdef NTTARGETFILES
+NTTARGETFILES=$(NTTARGETFILES:*=mips)
+!endif
+!ifdef NTTARGETFILE0
+NTTARGETFILE0=$(NTTARGETFILE0:*=mips)
+!endif
+!ifdef NTTARGETFILE1
+NTTARGETFILE1=$(NTTARGETFILE1:*=mips)
+!endif
+
+!IF "$(GPSIZE)" != "0"
+
+LIBC_LIB=$(BASEDIR)\public\sdk\lib\mips\small.lib $(LIBC_LIB)
+
+LINKGPSIZE=-gpsize:$(GPSIZE)
+
+!ENDIF
+
+LINKER_FLAGS = $(LINKER_FLAGS) -merge:.xdata=.rdata
+
+MIPS_ENDIAN=MIPSEL
+
+!IF "$(MIPS_F77)" == ""
+MIPS_F77=f772.20
+!ENDIF
+
+ENTRY_SUFFIX=
+GDI_ENTRY_SUFFIX=
+
+!IFDEF MIPS_WARNING_LEVEL
+MSC_WARNING_LEVEL=$(MIPS_WARNING_LEVEL)
+!ENDIF
+!IFDEF MIPS_OPTIMIZATION
+MSC_OPTIMIZATION=$(MIPS_OPTIMIZATION)
+!ENDIF
+!IFDEF MIPS_CPPFLAGS
+MSC_CPPFLAGS=$(MIPS_CPPFLAGS)
+!ENDIF
+
+#
+# Now a bunch of MIPS stuff
+#
+
+!IF "$(MSC_OPTFLAGS)" == "/Oxs"
+DBGFLAGS=$(MSC_OPTFLAGS:/Oxs=/Ox)
+!ENDIF
+
+DBGFLAGS = $(DBGFLAGS:/Zi=-Z7)
+
+# Use /Z7 instead of /Zi
+
+DBGFLAGS=$(DBGFLAGS:-Zi=-Z7)
+
+!IFNDEF MIPS_R3000
+MIPS_CPU=-DR4000 -D_M_MRX000=4000
+MIPS_TRAP_FILE=x4trap.obj
+!ELSE
+MIPS_CPU=-DR3000 -D_M_MRX000=3000
+MIPS_TRAP_FILE=x3trap.obj
+!ENDIF
+
+MIPS_ASM_DEFINES=$(MIPS_ASMCPP)
+ENV_DEFINES=$(LIBC_DEFINES) $(C_DEFINES) $(NET_C_DEFINES) $(MSC_CPPFLAGS) $(NTCPPFLAGS)
+
+STD_DEFINES=-DMIPS=1 -D_MIPS_=1 -D$(MIPS_ENDIAN) -DNO_EXT_KEYS -DCONDITION_HANDLING=1 $(STD_DEFINES)
+
+STDFLAGS=-c
+MS_MIPS=1
+
+MSC_C_COMPILER_NAME=cl $(CBSTRING) -nologo
+
+CDEFINES=$(STD_DEFINES) $(MIPS_CPU) $(TARGET_DBG_DEFINES) $(ENV_DEFINES)
+CFLAGS=$(MIPS_FLAGS) $(NTMIPSFLAGS) $(STDFLAGS) $(DBGFLAGS) $(MIPS_PERFFLAGS) $(USER_C_FLAGS)
+AFLAGS=-Gy $(MIPS_FLAGS) $(NTMIPSFLAGS) $(STDFLAGS) $(DBGFLAGS) $(MIPS_PERFFLAGS)
+
+MIPS_CDEFINES=$(CDEFINES)
+MIPS_CFLAGS=$(CFLAGS) -Zel -Zp8 -Gy $(MSC_WARNING_LEVEL) -QMOb4000
+MIPS_CFLAGS=$(MIPS_CFLAGS:-Qmips=-QM)
+
+C_PREPROCESSOR_NAME = $(MSC_C_COMPILER_NAME)
+C_COMPILER_NAME = $(MSC_C_COMPILER_NAME)
+CXX_COMPILER_NAME = $(MSC_C_COMPILER_NAME)
+MIPS_ASSEMBLER_NAME = $(MSC_C_COMPILER_NAME)
+
+GLOBAL_C_FLAGS = -nologo -Imips\ -I. $(INCPATH0) $(CDEFINES) $(MIPS_CFLAGS) \
+ -DFPO=1 -D__stdcall= -D__cdecl= -D_LANGUAGE_C -DLANGUAGE_C $(MFC_FLAGS)
+
+C_PREPROCESSOR_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED) -EP -Tc
+C_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED) -Gt$(GPSIZE) $(COMPILER_WARNINGS)
+CXX_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED_CXX) -Gt$(GPSIZE) $(COMPILER_WARNINGS)
+
+C_PREPROCESSOR = $(C_PREPROCESSOR_NAME) $(C_PREPROCESSOR_FLAGS)
+C_COMPILER = $(C_COMPILER_NAME) $(C_COMPILER_FLAGS)
+CXX_COMPILER = $(CXX_COMPILER_NAME) $(CXX_COMPILER_FLAGS)
+
+ECHO_MSG=ClMips $< " $(C_COMPILER) "
+
+ECHO_PRECOMPILED_MSG=CpMips $(PRECOMPILED_INCLUDE) " $(C_COMPILER) \
+ /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) \
+ $(HEADEROBJ) $(PRECOMPILED_FLAG)"
+
+MIPS_FORTRAN_COMPILER=$(MIPS_F77) $(MSC_WARNINGS) $(MIPS_OPTIONS) -G $(GPSIZE) \
+ -excpt -G0 $(MSC_OPTIMIZATION) -O -EL -c
+
+MIPS_CRFILTER=echo SHOULDN'T NEED TO CRFILTER THIS!
+
+!IF "$(NTDEBUG)" == "" || "$(NTDEBUG)" == "retail"
+!IFNDEF MIPS_ENABLE_DIVIDE_CHECK
+MIPS_CFLAGS=$(MIPS_CFLAGS) -d2aNoDivCheck
+!ENDIF
+!ENDIF
+
+!ifdef MIPS_ENABLE_MIPS3
+AFLAGS=$(AFLAGS) -d2QMmips3
+!endif
+
+#
+# Use Mips MCL for assembler files.
+#
+
+MIPS_ASSEMBLER_FLAGS = -nologo -Gt$(GPSIZE) -Ge -c $(MIPS_CPU_SWITCHES) \
+ -Imips\ -I. $(INCPATH0) $(CDEFINES) \
+ $(AFLAGS) -D_LANGUAGE_ASSEMBLY
+
+MIPS_ASSEMBLER = $(MIPS_ASSEMBLER_NAME) $(MIPS_ASSEMBLER_FLAGS)
+
+{..\mips\}.s{obj\mips\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsMips $< " $(MIPS_ASSEMBLER) "
+ @$(MIPS_ASSEMBLER_NAME) @<< -Fo$(MAKEDIR)\$@ $<
+$(MIPS_ASSEMBLER_FLAGS: =
+)
+<<NOKEEP
+
+{mips\}.s{obj\mips\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsMips $< " $(MIPS_ASSEMBLER) $(MIPS_ASSEMBLER_FLAGS)"
+ @$(MIPS_ASSEMBLER_NAME) @<< -Fo$(MAKEDIR)\$@ $<
+$(MIPS_ASSEMBLER_FLAGS: =
+)
+<<NOKEEP
+
+LINKFLAGS=$(LNKFLAGS) -NODEFAULTLIB
+LIBRARY_OBJS=$(LINKLIBS) $(OBJECTS)
+# LIBRARY_OBJS=
+
+!IFDEF TUKWILA
+_NTTREE=$(_NTMIPSTREE)
+!ENDIF
+
+!IFDEF CAIRO_PRODUCT
+!IFDEF _CAIROMIPSTREE
+_NTTREE=$(_CAIROMIPSTREE)
+!ENDIF
+!ELSEIFDEF _NTMIPSTREE
+_NTTREE=$(_NTMIPSTREE)
+!ENDIF
+
+!IFDEF KERNEL_MODE
+_NTTREE=$(_NTMIPSTREE)\km
+!ENDIF
+
+!IFDEF _NTMIPSLIBS
+_NTLIBS=$(_NTMIPSLIBS)
+!ENDIF
+
+COPYDST=$(MIPSCOPYDST)
+LIB_COPY=ntmipscp.cmd
+
+NTTEST_LINK_OPTIONS= -base:0x10000 -entry:KiSystemStartup
diff --git a/private/utils/ntbackup/exchange/build/ppcmk.inc b/private/utils/ntbackup/exchange/build/ppcmk.inc
new file mode 100644
index 000000000..0503ff0b0
--- /dev/null
+++ b/private/utils/ntbackup/exchange/build/ppcmk.inc
@@ -0,0 +1,227 @@
+!IF 0
+
+Copyright (c) 1994 Microsoft Corporation
+
+Module Name:
+
+ppcmk.inc
+
+Abstract:
+
+This module contains the PPC specific build controls. It is included
+by makefile.def.
+
+Author:
+
+Matt Holle (v-matth) 13-Feb-1994
+
+Revision History:
+
+!ENDIF
+
+
+#
+# PPC option control
+#
+
+UMBASE=$(UMBASE:*=ppc)
+UMLIBS=$(UMLIBS:*=ppc)
+NTRES=$(NTRES:*=ppc)
+UMRES=$(UMRES:*=ppc)
+UMOBJS=$(UMOBJS:*=ppc)
+LINKLIBS=$(LINKLIBS:*=ppc)
+DLLBASE=$(DLLBASE:*=ppc)
+DLLDEF=$(DLLDEF:*=ppc)
+MACHINE_TARGETLIBS=$(MACHINE_TARGETLIBS:*=ppc)
+TARGET=$(TARGET:*=ppc)
+DYNLINK_LIB=$(DYNLINK_LIB:*=ppc)
+TARGETEXEFILES=$(TARGETEXEFILES:*=ppc)
+TARGETLIBFILES=$(TARGETLIBFILES:*=ppc)
+TARGETOBJFILES=$(TARGETOBJFILES:*=ppc)
+UMOBJFILES=$(UMOBJFILES:*=ppc)
+UMEXEFILES=$(UMEXEFILES:*=ppc)
+HEADERFILE=$(HEADERFILE:*=ppc)
+HEADEROBJNAME=$(HEADEROBJNAME:*=ppc)
+HEADEROBJ=$(HEADEROBJ:*=ppc)
+PRECOMPILED=$(PRECOMPILED:*=ppc)
+PRECOMPILED_CXX=$(PRECOMPILED_CXX:*=ppc)
+PRECOMPILED_TARGET=$(PRECOMPILED_TARGET:*=ppc)
+
+#
+# Include 64-bit helper library
+#
+#LINKLIBS=$(LINKLIBS) $(BASEDIR)\public\sdk\lib\ppc\int64.lib
+!IF "$(TARGETTYPE)"=="DRIVER" || \
+ "$(TARGETTYPE)"=="GDI_DRIVER" || \
+ "$(TARGETTYPE)"=="MINIPORT"
+#
+#Drivers don't link with link libs.
+#
+MACHINE_TARGETLIBS=$(MACHINE_TARGETLIBS) $(BASEDIR)\public\sdk\lib\ppc\int64.lib
+!ENDIF
+
+!ifdef NTTARGETFILES
+NTTARGETFILES=$(NTTARGETFILES:*=ppc)
+!endif
+!ifdef NTTARGETFILE0
+NTTARGETFILE0=$(NTTARGETFILE0:*=ppc)
+!endif
+!ifdef NTTARGETFILE1
+NTTARGETFILE1=$(NTTARGETFILE1:*=ppc)
+!endif
+
+!IF "$(GPSIZE)" != "0"
+#
+# GPSIZE is irrelevant on PowerPC
+#
+LINKGPSIZE=
+!ENDIF
+
+ENTRY_SUFFIX=
+GDI_ENTRY_SUFFIX=
+
+!IF "$(MSC_OPTFLAGS)" == "/Oxs"
+DBGFLAGS=$(MSC_OPTFLAGS:/Oxs=/Ox)
+!ENDIF
+
+!IFDEF PPC_WARNING_LEVEL
+MSC_WARNING_LEVEL=$(PPC_WARNING_LEVEL)
+!ENDIF
+
+!IFDEF PPC_OPTIMIZATION
+MSC_OPTIMIZATION=$(PPC_OPTIMIZATION)
+!ELSE
+MSC_OPTIMIZATION=
+!ENDIF
+
+!IFDEF PPC_CPPFLAGS
+MSC_CPPFLAGS=$(PPC_CPPFLAGS)
+!ENDIF
+
+PPC_AS=pas
+PPC_DIS=pdis
+PPC_AS_WARNINGS=
+
+PPC_START_FILE=start.obj
+
+ENV_DEFINES=$(LIBC_DEFINES) $(C_DEFINES) $(NET_C_DEFINES) $(MSC_CPPFLAGS) $(NTCPPFLAGS) $(PM_DEFINES)
+STD_DEFINES=-DPPC=1 -D_PPC_=1 -DNO_EXT_KEYS $(STD_DEFINES) -D_M_PPC=1
+
+STDFLAGS=-c -Zel -Zp8 -Gy $(MFC_FLAGS)
+
+PPC_C_COMPILER_NAME = cl $(CBSTRING) -nologo
+PPC_CC = $(PPC_C_COMPILER_NAME)
+
+CDEFINES=$(STD_DEFINES) $(TARGET_DBG_DEFINES) $(ENV_DEFINES)
+CFLAGS=$(PPC_FLAGS) $(NTPPCFLAGS) $(STDFLAGS) $(DBGFLAGS) $(USER_C_FLAGS)
+
+PPC_CDEFINES= $(CDEFINES)
+PPC_CFLAGS = $(CFLAGS) -ZB64 $(MSC_WARNING_LEVEL) # -DALLOC_TEXT
+
+!IFNDEF PPC_OPTIONS
+PPC_OPTIONS=
+!ENDIF
+
+C_COMPILER_NAME = $(PPC_C_COMPILER_NAME)
+C_PREPROCESSOR_NAME = $(PPC_C_COMPILER_NAME)
+CXX_COMPILER_NAME = $(PPC_C_COMPILER_NAME)
+
+GLOBAL_C_FLAGS = -nologo -Ippc\ -I. $(INCPATH0) $(CDEFINES) $(PPC_OPTIONS) \
+ $(PPC_CFLAGS) -D__stdcall= -D__cdecl= -D_cdecl= -Dcdecl= \
+ -DFPO=1 -DLANGUAGE_C
+
+# Disable -WX for now
+
+GLOBAL_C_FLAGS = $(GLOBAL_C_FLAGS:-WX=)
+GLOBAL_C_FLAGS = $(GLOBAL_C_FLAGS:/WX=)
+
+C_PREPROCESSOR_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED) -EP -Tc
+C_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED) $(COMPILER_WARNINGS)
+CXX_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED_CXX) $(COMPILER_WARNINGS)
+
+C_PREPROCESSOR = $(C_PREPROCESSOR_NAME) $(C_PREPROCESSOR_FLAGS)
+C_COMPILER = $(C_COMPILER_NAME) $(C_COMPILER_FLAGS)
+CXX_COMPILER = $(CXX_COMPILER_NAME) $(CXX_COMPILER_FLAGS)
+
+PPC_ASSEMBLER = $(PPC_AS) $(PPC_AS_WARNINGS)
+
+ECHO_MSG = ClPpc $< " $(C_COMPILER) "
+ECHO_PRECOMPILED_MSG = CpPpc $(PRECOMPILED_INCLUDE) " $(C_COMPILER) \
+ /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) \
+ $(HEADEROBJ) $(PRECOMPILED_FLAG)"
+
+{.\}.cxx{}.obj:
+ @$(ECHO_MSG)
+ @$(CXX_COMPILER) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+
+{.\}.cxx{obj\$(TARGET_DIRECTORY)\}.obj:
+ @$(ECHO_MSG)
+ @$(CXX_COMPILER) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+
+{}.cxx{obj\$(TARGET_DIRECTORY)\}.obj:
+ @$(ECHO_MSG)
+ @$(CXX_COMPILER) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+
+{..\ppc\}.s{obj\ppc\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsPpc $< " $(PPC_ASSEMBLER) "
+ $(C_PREPROCESSOR) $(MAKEDIR)\..\ppc\$(<F) > $(MAKEDIR)\obj\ppc\$(<B).i && $(PPC_ASSEMBLER) -o $@ $(MAKEDIR)\obj\ppc\$(<B).i
+ @-erase $(MAKEDIR)\obj\ppc\$(<B).i >nul 2>&1
+
+
+{ppc\}.s{obj\ppc\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsPpc $< " $(PPC_ASSEMBLER) "
+ $(C_PREPROCESSOR) $(MAKEDIR)\ppc\$(<F) > $(MAKEDIR)\obj\ppc\$(<B).i && $(PPC_ASSEMBLER) -o $@ $(MAKEDIR)\obj\ppc\$(<B).i
+ @-erase $(MAKEDIR)\obj\ppc\$(<B).i >nul 2>&1
+
+.SUFFIXES: .il
+
+{}.il{}.cod:
+ @-erase $@ >nul 2>&1
+ @echo MCL $<" $(C_COMPILER) "
+ @$(C_COMPILER) -FAac -Fa$(<B).cod -B1..\bootbin\null.exe -Bk$(<B). -Fo$(MAKEDIR)\obj\ppc\$(<B).o $(MAKEDIR)\$(<B).c
+ @del obj\ppc\$(<B).o
+
+#
+# No reodering under ppc.
+#
+
+LIBRARY_OBJS=$(LINKLIBS) $(OBJECTS)
+
+!IFDEF TUKWILA
+_NTTREE=$(_NTPPCTREE)
+!ENDIF
+
+!IFDEF CAIRO_PRODUCT
+!IFDEF _CAIROPPCTREE
+_NTTREE=$(_CAIROPPCTREE)
+!ENDIF
+!ELSE
+!IFDEF _NTPPCTREE
+_NTTREE=$(_NTPPCTREE)
+!ENDIF
+!ENDIF
+
+!IFDEF KERNEL_MODE
+_NTTREE=$(_NTPPCTREE)\km
+!ENDIF
+
+!IFDEF _NTPPCLIBS
+_NTLIBS=$(_NTPPCLIBS)
+!ENDIF
+
+COPYDST=$(PPCCOPYDST)
+
+LIB_COPY=ntppccp.cmd
+
+NTTEST_LINK_OPTIONS= -base:0x80100000 -entry:KiSystemStartup
+
+#
+# Move the compiler generated function descriptors into .rdata
+#
+# Can be removed when we switch to the MS PPC compiler (assuming
+# it emits the descriptor in .rdata already) BryanT
+#
+
+LINKER_FLAGS = -merge:.reldata=.rdata $(LINKER_FLAGS)
diff --git a/private/utils/ntbackup/exchange/inc/edbmsg.h b/private/utils/ntbackup/exchange/inc/edbmsg.h
new file mode 100644
index 000000000..2288317dc
--- /dev/null
+++ b/private/utils/ntbackup/exchange/inc/edbmsg.h
@@ -0,0 +1,1737 @@
+/*
+ * EDBMSG.H
+ *
+ * Microsoft Exchange Information Store
+ * Copyright (C) 1986-1996, Microsoft Corporation
+ *
+ * Contains declarations of additional properties and interfaces
+ * offered by Microsoft Exchange Information Store
+ */
+
+#ifndef _EDBMSG_
+#define _EDBMSG_
+
+//
+// SUCCESS
+//
+//
+// Values are 32 bit values layed out as follows:
+//
+// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+// +---+-+-+-----------------------+-------------------------------+
+// |Sev|C|R| Facility | Code |
+// +---+-+-+-----------------------+-------------------------------+
+//
+// where
+//
+// Sev - is the severity code
+//
+// 00 - Success
+// 01 - Informational
+// 10 - Warning
+// 11 - Error
+//
+// C - is the Customer code flag
+//
+// R - is a reserved bit
+//
+// Facility - is the facility code
+//
+// Code - is the facility's status code
+//
+//
+// Define the facility codes
+//
+#define FACILITY_SYSTEM 0x0
+#define FACILITY_EDB 0x800
+#define FACILITY_BACKUP 0x7FF
+
+
+//
+// Define the severity codes
+//
+#define STATUS_SEVERITY_WARNING 0x2
+#define STATUS_SEVERITY_SUCCESS 0x0
+#define STATUS_SEVERITY_INFORMATIONAL 0x1
+#define STATUS_SEVERITY_ERROR 0x3
+
+
+//
+// MessageId: hrNone
+//
+// MessageText:
+//
+// The operation was successful
+//
+#define hrNone ((HRESULT)0x00000000L)
+
+//
+// ERRORS
+//
+//
+// MessageId: hrNyi
+//
+// MessageText:
+//
+// The function is not yet implemented
+//
+#define hrNyi ((HRESULT)0xC0000001L)
+
+//
+// Backup errors
+//
+//
+// MessageId: hrInvalidParam
+//
+// MessageText:
+//
+// The parameter is not valid.
+//
+#define hrInvalidParam ((HRESULT)0xC7FF0001L)
+
+//
+// MessageId: hrError
+//
+// MessageText:
+//
+// An internal error has occurred.
+//
+#define hrError ((HRESULT)0xC7FF0002L)
+
+//
+// MessageId: hrInvalidHandle
+//
+// MessageText:
+//
+// The handle is not valid.
+//
+#define hrInvalidHandle ((HRESULT)0xC7FF0003L)
+
+//
+// MessageId: hrRestoreInProgress
+//
+// MessageText:
+//
+// The Restore process is already in progress.
+//
+#define hrRestoreInProgress ((HRESULT)0xC7FF0004L)
+
+//
+// MessageId: hrAlreadyOpen
+//
+// MessageText:
+//
+// The file specified is already open.
+//
+#define hrAlreadyOpen ((HRESULT)0xC7FF0005L)
+
+//
+// MessageId: hrInvalidRecips
+//
+// MessageText:
+//
+// The recipients are invalid.
+//
+#define hrInvalidRecips ((HRESULT)0xC7FF0006L)
+
+//
+// MessageId: hrCouldNotConnect
+//
+// MessageText:
+//
+// Unable to perform the backup. Either you are not connected to the specified backup server
+// or the service you are trying to backup is not running.
+//
+#define hrCouldNotConnect ((HRESULT)0xC7FF0007L)
+
+//
+// MessageId: hrRestoreMapExists
+//
+// MessageText:
+//
+// A restore map already exists for the specified component. You can only specify
+// a restore map when performing a full restore.
+//
+#define hrRestoreMapExists ((HRESULT)0xC7FF0008L)
+
+//
+// MessageId: hrIncrementalBackupDisabled
+//
+// MessageText:
+//
+// Another application has modified the specified Microsoft Exchange database such that any
+// subsequent backups will fail. You must perform a full backup to fix this problem.
+//
+#define hrIncrementalBackupDisabled ((HRESULT)0xC7FF0009L)
+
+//
+// MessageId: hrLogFileNotFound
+//
+// MessageText:
+//
+// Unable to perform an incremental backup because a required Microsoft Exchange database log file could not be found.
+//
+#define hrLogFileNotFound ((HRESULT)0xC7FF000AL)
+
+//
+// MessageId: hrCircularLogging
+//
+// MessageText:
+//
+// The Microsoft Exchange component specified is configured to use circular database logs.
+// It cannot be backed up without a full backup.
+//
+#define hrCircularLogging ((HRESULT)0xC7FF000BL)
+
+//
+// MessageId: hrNoFullRestore
+//
+// MessageText:
+//
+// The databases have not been restored to this machine. You cannot restore an incremental backup
+// until a full backup has been restored.
+//
+#define hrNoFullRestore ((HRESULT)0xC7FF000CL)
+
+//
+// MessageId: hrCommunicationError
+//
+// MessageText:
+//
+// A communications error occurred while attempting to perform a local backup.
+//
+#define hrCommunicationError ((HRESULT)0xC7FF000DL)
+
+//
+// MessageId: hrFullBackupNotTaken
+//
+// MessageText:
+//
+// You must perform a full backup before you can perform an incremental backup.
+//
+#define hrFullBackupNotTaken ((HRESULT)0xC7FF000EL)
+
+#define hrAlreadyListening ((HRESULT)RPC_S_ALREADY_LISTENING)
+//
+// ERRORS
+//
+//
+// SYSTEM errors
+//
+//
+// MessageId: hrFileClose
+//
+// MessageText:
+//
+// Unable to close the DOS file
+//
+#define hrFileClose ((HRESULT)0xC8000066L)
+
+//
+// MessageId: hrOutOfThreads
+//
+// MessageText:
+//
+// Unable to start a thread because there are none available.
+//
+#define hrOutOfThreads ((HRESULT)0xC8000067L)
+
+//
+// MessageId: hrTooManyIO
+//
+// MessageText:
+//
+// The system is busy because there are too many I/Os.
+//
+#define hrTooManyIO ((HRESULT)0xC8000069L)
+
+//
+// BUFFER MANAGER errors
+//
+//
+// MessageId: hrBFNotSynchronous
+//
+// MessageText:
+//
+// The buffer page has been evicted.
+//
+#define hrBFNotSynchronous ((HRESULT)0x880000C8L)
+
+//
+// MessageId: hrBFPageNotFound
+//
+// MessageText:
+//
+// Unable to find the page.
+//
+#define hrBFPageNotFound ((HRESULT)0x880000C9L)
+
+//
+// MessageId: hrBFInUse
+//
+// MessageText:
+//
+// Unable to abandon the buffer.
+//
+#define hrBFInUse ((HRESULT)0xC80000CAL)
+
+//
+// DIRECTORY MANAGER errors
+//
+//
+// MessageId: hrPMRecDeleted
+//
+// MessageText:
+//
+// The record has been deleted.
+//
+#define hrPMRecDeleted ((HRESULT)0xC800012EL)
+
+//
+// MessageId: hrRemainingVersions
+//
+// MessageText:
+//
+// There is idle work remaining.
+//
+#define hrRemainingVersions ((HRESULT)0x88000141L)
+
+//
+// RECORD MANAGER errors
+//
+//
+// MessageId: hrFLDKeyTooBig
+//
+// MessageText:
+//
+// The key was truncated because it is more than 255 bytes.
+//
+#define hrFLDKeyTooBig ((HRESULT)0x88000190L)
+
+//
+// MessageId: hrFLDTooManySegments
+//
+// MessageText:
+//
+// There are too many key segments.
+//
+#define hrFLDTooManySegments ((HRESULT)0xC8000191L)
+
+//
+// MessageId: hrFLDNullKey
+//
+// MessageText:
+//
+// The key is NULL.
+//
+#define hrFLDNullKey ((HRESULT)0x88000192L)
+
+//
+// LOGGING/RECOVERY errors
+//
+//
+// MessageId: hrLogFileCorrupt
+//
+// MessageText:
+//
+// The log file is damaged.
+//
+#define hrLogFileCorrupt ((HRESULT)0xC80001F5L)
+
+//
+// MessageId: hrNoBackupDirectory
+//
+// MessageText:
+//
+// No backup directory was given.
+//
+#define hrNoBackupDirectory ((HRESULT)0xC80001F7L)
+
+//
+// MessageId: hrBackupDirectoryNotEmpty
+//
+// MessageText:
+//
+// The backup directory is not empty.
+//
+#define hrBackupDirectoryNotEmpty ((HRESULT)0xC80001F8L)
+
+//
+// MessageId: hrBackupInProgress
+//
+// MessageText:
+//
+// Backup is already active.
+//
+#define hrBackupInProgress ((HRESULT)0xC80001F9L)
+
+//
+// MessageId: hrMissingPreviousLogFile
+//
+// MessageText:
+//
+// A log file for the checkpoint is missing.
+//
+#define hrMissingPreviousLogFile ((HRESULT)0xC80001FDL)
+
+//
+// MessageId: hrLogWriteFail
+//
+// MessageText:
+//
+// Unable to write to the log file.
+//
+#define hrLogWriteFail ((HRESULT)0xC80001FEL)
+
+//
+// MessageId: hrBadLogVersion
+//
+// MessageText:
+//
+// The version of the log file is not compatible with the version of the Microsoft Exchange Server database (EDB).
+//
+#define hrBadLogVersion ((HRESULT)0xC8000202L)
+
+//
+// MessageId: hrInvalidLogSequence
+//
+// MessageText:
+//
+// The time stamp in the next log does not match what was expected.
+//
+#define hrInvalidLogSequence ((HRESULT)0xC8000203L)
+
+//
+// MessageId: hrLoggingDisabled
+//
+// MessageText:
+//
+// The log is not active.
+//
+#define hrLoggingDisabled ((HRESULT)0xC8000204L)
+
+//
+// MessageId: hrLogBufferTooSmall
+//
+// MessageText:
+//
+// The log buffer is too small to be recovered.
+//
+#define hrLogBufferTooSmall ((HRESULT)0xC8000205L)
+
+//
+// MessageId: hrLogSequenceEnd
+//
+// MessageText:
+//
+// The maximum number of log files has been exceeded.
+//
+#define hrLogSequenceEnd ((HRESULT)0xC8000207L)
+
+//
+// MessageId: hrNoBackup
+//
+// MessageText:
+//
+// There is no backup in progress.
+//
+#define hrNoBackup ((HRESULT)0xC8000208L)
+
+//
+// MessageId: hrInvalidBackupSequence
+//
+// MessageText:
+//
+// The backup call is out of sequence.
+//
+#define hrInvalidBackupSequence ((HRESULT)0xC8000209L)
+
+//
+// MessageId: hrBackupNotAllowedYet
+//
+// MessageText:
+//
+// Unable to perform a backup now.
+//
+#define hrBackupNotAllowedYet ((HRESULT)0xC800020BL)
+
+//
+// MessageId: hrDeleteBackupFileFail
+//
+// MessageText:
+//
+// Unable to delete the backup file.
+//
+#define hrDeleteBackupFileFail ((HRESULT)0xC800020CL)
+
+//
+// MessageId: hrMakeBackupDirectoryFail
+//
+// MessageText:
+//
+// Unable to make a backup temporary directory.
+//
+#define hrMakeBackupDirectoryFail ((HRESULT)0xC800020DL)
+
+//
+// MessageId: hrInvalidBackup
+//
+// MessageText:
+//
+// An incremental backup cannot be performed when circular logging is enabled.
+//
+#define hrInvalidBackup ((HRESULT)0xC800020EL)
+
+//
+// MessageId: hrRecoveredWithErrors
+//
+// MessageText:
+//
+// Errors were encountered during the repair process.
+//
+#define hrRecoveredWithErrors ((HRESULT)0xC800020FL)
+
+//
+// MessageId: hrMissingLogFile
+//
+// MessageText:
+//
+// The current log file is missing.
+//
+#define hrMissingLogFile ((HRESULT)0xC8000210L)
+
+//
+// MessageId: hrLogDiskFull
+//
+// MessageText:
+//
+// The log disk is full.
+//
+#define hrLogDiskFull ((HRESULT)0xC8000211L)
+
+//
+// MessageId: hrBadLogSignature
+//
+// MessageText:
+//
+// A log file is damaged.
+//
+#define hrBadLogSignature ((HRESULT)0xC8000212L)
+
+//
+// MessageId: hrBadDbSignature
+//
+// MessageText:
+//
+// A database file is damaged.
+//
+#define hrBadDbSignature ((HRESULT)0xC8000213L)
+
+//
+// MessageId: hrBadCheckpointSignature
+//
+// MessageText:
+//
+// A checkpoint file is damaged.
+//
+#define hrBadCheckpointSignature ((HRESULT)0xC8000214L)
+
+//
+// MessageId: hrCheckpointCorrupt
+//
+// MessageText:
+//
+// A checkpoint file either could not be found or is damaged.
+//
+#define hrCheckpointCorrupt ((HRESULT)0xC8000215L)
+
+//
+// MessageId: hrDatabaseInconsistent
+//
+// MessageText:
+//
+// The database is damaged.
+//
+#define hrDatabaseInconsistent ((HRESULT)0xC8000226L)
+
+//
+// MessageId: hrConsistentTimeMismatch
+//
+// MessageText:
+//
+// There is a mismatch in the database's last consistent time.
+//
+#define hrConsistentTimeMismatch ((HRESULT)0xC8000227L)
+
+//
+// MessageId: hrPatchFileMismatch
+//
+// MessageText:
+//
+// The patch file is not generated from this backup.
+//
+#define hrPatchFileMismatch ((HRESULT)0xC8000228L)
+
+//
+// MessageId: hrRestoreLogTooLow
+//
+// MessageText:
+//
+// The starting log number is too low for the restore.
+//
+#define hrRestoreLogTooLow ((HRESULT)0xC8000229L)
+
+//
+// MessageId: hrRestoreLogTooHigh
+//
+// MessageText:
+//
+// The starting log number is too high for the restore.
+//
+#define hrRestoreLogTooHigh ((HRESULT)0xC800022AL)
+
+//
+// MessageId: hrGivenLogFileHasBadSignature
+//
+// MessageText:
+//
+// The log file downloaded from the tape is damaged.
+//
+#define hrGivenLogFileHasBadSignature ((HRESULT)0xC800022BL)
+
+//
+// MessageId: hrGivenLogFileIsNotContiguous
+//
+// MessageText:
+//
+// Unable to find a mandatory log file after the tape was downloaded.
+//
+#define hrGivenLogFileIsNotContiguous ((HRESULT)0xC800022CL)
+
+//
+// MessageId: hrMissingRestoreLogFiles
+//
+// MessageText:
+//
+// The data is not fully restored because some log files are missing.
+//
+#define hrMissingRestoreLogFiles ((HRESULT)0xC800022DL)
+
+//
+// MessageId: hrExistingLogFileHasBadSignature
+//
+// MessageText:
+//
+// The log file in the log file path is damaged.
+//
+#define hrExistingLogFileHasBadSignature ((HRESULT)0x8800022EL)
+
+//
+// MessageId: hrExistingLogFileIsNotContiguous
+//
+// MessageText:
+//
+// Unable to find a mandatory log file in the log file path.
+//
+#define hrExistingLogFileIsNotContiguous ((HRESULT)0x8800022FL)
+
+//
+// MessageId: hrMissingFullBackup
+//
+// MessageText:
+//
+// The database missed a previous full backup before the incremental backup.
+//
+#define hrMissingFullBackup ((HRESULT)0xC8000230L)
+
+//
+// MessageId: hrBadBackupDatabaseSize
+//
+// MessageText:
+//
+// The backup database size must be a multiple of 4K (4096 bytes).
+//
+#define hrBadBackupDatabaseSize ((HRESULT)0xC8000231L)
+
+//
+// MessageId: hrTermInProgress
+//
+// MessageText:
+//
+// The database is being shut down.
+//
+#define hrTermInProgress ((HRESULT)0xC80003E8L)
+
+//
+// MessageId: hrFeatureNotAvailable
+//
+// MessageText:
+//
+// The feature is not available.
+//
+#define hrFeatureNotAvailable ((HRESULT)0xC80003E9L)
+
+//
+// MessageId: hrInvalidName
+//
+// MessageText:
+//
+// The name is not valid.
+//
+#define hrInvalidName ((HRESULT)0xC80003EAL)
+
+//
+// MessageId: hrInvalidParameter
+//
+// MessageText:
+//
+// The parameter is not valid.
+//
+#define hrInvalidParameter ((HRESULT)0xC80003EBL)
+
+//
+// MessageId: hrColumnNull
+//
+// MessageText:
+//
+// The value of the column is null.
+//
+#define hrColumnNull ((HRESULT)0x880003ECL)
+
+//
+// MessageId: hrBufferTruncated
+//
+// MessageText:
+//
+// The buffer is too small for data.
+//
+#define hrBufferTruncated ((HRESULT)0x880003EEL)
+
+//
+// MessageId: hrDatabaseAttached
+//
+// MessageText:
+//
+// The database is already attached.
+//
+#define hrDatabaseAttached ((HRESULT)0x880003EFL)
+
+//
+// MessageId: hrInvalidDatabaseId
+//
+// MessageText:
+//
+// The database ID is not valid.
+//
+#define hrInvalidDatabaseId ((HRESULT)0xC80003F2L)
+
+//
+// MessageId: hrOutOfMemory
+//
+// MessageText:
+//
+// The computer is out of memory.
+//
+#define hrOutOfMemory ((HRESULT)0xC80003F3L)
+
+//
+// MessageId: hrOutOfDatabaseSpace
+//
+// MessageText:
+//
+// The database has reached the maximum size of 16 GB.
+//
+#define hrOutOfDatabaseSpace ((HRESULT)0xC80003F4L)
+
+//
+// MessageId: hrOutOfCursors
+//
+// MessageText:
+//
+// Out of table cursors.
+//
+#define hrOutOfCursors ((HRESULT)0xC80003F5L)
+
+//
+// MessageId: hrOutOfBuffers
+//
+// MessageText:
+//
+// Out of database page buffers.
+//
+#define hrOutOfBuffers ((HRESULT)0xC80003F6L)
+
+//
+// MessageId: hrTooManyIndexes
+//
+// MessageText:
+//
+// There are too many indexes.
+//
+#define hrTooManyIndexes ((HRESULT)0xC80003F7L)
+
+//
+// MessageId: hrTooManyKeys
+//
+// MessageText:
+//
+// There are too many columns in an index.
+//
+#define hrTooManyKeys ((HRESULT)0xC80003F8L)
+
+//
+// MessageId: hrRecordDeleted
+//
+// MessageText:
+//
+// The record has been deleted.
+//
+#define hrRecordDeleted ((HRESULT)0xC80003F9L)
+
+//
+// MessageId: hrReadVerifyFailure
+//
+// MessageText:
+//
+// A read verification error occurred.
+//
+#define hrReadVerifyFailure ((HRESULT)0xC80003FAL)
+
+//
+// MessageId: hrOutOfFileHandles
+//
+// MessageText:
+//
+// Out of file handles.
+//
+#define hrOutOfFileHandles ((HRESULT)0xC80003FCL)
+
+//
+// MessageId: hrDiskIO
+//
+// MessageText:
+//
+// A disk I/O error occurred.
+//
+#define hrDiskIO ((HRESULT)0xC80003FEL)
+
+//
+// MessageId: hrInvalidPath
+//
+// MessageText:
+//
+// The path to the file is not valid.
+//
+#define hrInvalidPath ((HRESULT)0xC80003FFL)
+
+//
+// MessageId: hrRecordTooBig
+//
+// MessageText:
+//
+// The record has exceeded the maximum size.
+//
+#define hrRecordTooBig ((HRESULT)0xC8000402L)
+
+//
+// MessageId: hrTooManyOpenDatabases
+//
+// MessageText:
+//
+// There are too many open databases.
+//
+#define hrTooManyOpenDatabases ((HRESULT)0xC8000403L)
+
+//
+// MessageId: hrInvalidDatabase
+//
+// MessageText:
+//
+// The file is not a database file.
+//
+#define hrInvalidDatabase ((HRESULT)0xC8000404L)
+
+//
+// MessageId: hrNotInitialized
+//
+// MessageText:
+//
+// The database was not yet called.
+//
+#define hrNotInitialized ((HRESULT)0xC8000405L)
+
+//
+// MessageId: hrAlreadyInitialized
+//
+// MessageText:
+//
+// The database was already called.
+//
+#define hrAlreadyInitialized ((HRESULT)0xC8000406L)
+
+//
+// MessageId: hrFileAccessDenied
+//
+// MessageText:
+//
+// Unable to access the file.
+//
+#define hrFileAccessDenied ((HRESULT)0xC8000408L)
+
+//
+// MessageId: hrBufferTooSmall
+//
+// MessageText:
+//
+// The buffer is too small.
+//
+#define hrBufferTooSmall ((HRESULT)0xC800040EL)
+
+//
+// MessageId: hrSeekNotEqual
+//
+// MessageText:
+//
+// Either SeekLE or SeekGE did not find an exact match.
+//
+#define hrSeekNotEqual ((HRESULT)0x8800040FL)
+
+//
+// MessageId: hrTooManyColumns
+//
+// MessageText:
+//
+// There are too many columns defined.
+//
+#define hrTooManyColumns ((HRESULT)0xC8000410L)
+
+//
+// MessageId: hrContainerNotEmpty
+//
+// MessageText:
+//
+// The container is not empty.
+//
+#define hrContainerNotEmpty ((HRESULT)0xC8000413L)
+
+//
+// MessageId: hrInvalidFilename
+//
+// MessageText:
+//
+// The filename is not valid.
+//
+#define hrInvalidFilename ((HRESULT)0xC8000414L)
+
+//
+// MessageId: hrInvalidBookmark
+//
+// MessageText:
+//
+// The bookmark is not valid.
+//
+#define hrInvalidBookmark ((HRESULT)0xC8000415L)
+
+//
+// MessageId: hrColumnInUse
+//
+// MessageText:
+//
+// The column is used in an index.
+//
+#define hrColumnInUse ((HRESULT)0xC8000416L)
+
+//
+// MessageId: hrInvalidBufferSize
+//
+// MessageText:
+//
+// The data buffer does not match the column size.
+//
+#define hrInvalidBufferSize ((HRESULT)0xC8000417L)
+
+//
+// MessageId: hrColumnNotUpdatable
+//
+// MessageText:
+//
+// Unable to set the column value.
+//
+#define hrColumnNotUpdatable ((HRESULT)0xC8000418L)
+
+//
+// MessageId: hrIndexInUse
+//
+// MessageText:
+//
+// The index is in use.
+//
+#define hrIndexInUse ((HRESULT)0xC800041BL)
+
+//
+// MessageId: hrNullKeyDisallowed
+//
+// MessageText:
+//
+// Null keys are not allowed on an index.
+//
+#define hrNullKeyDisallowed ((HRESULT)0xC800041DL)
+
+//
+// MessageId: hrNotInTransaction
+//
+// MessageText:
+//
+// The operation must be within a transaction.
+//
+#define hrNotInTransaction ((HRESULT)0xC800041EL)
+
+//
+// MessageId: hrNoIdleActivity
+//
+// MessageText:
+//
+// No idle activity occured.
+//
+#define hrNoIdleActivity ((HRESULT)0x88000422L)
+
+//
+// MessageId: hrTooManyActiveUsers
+//
+// MessageText:
+//
+// There are too many active database users.
+//
+#define hrTooManyActiveUsers ((HRESULT)0xC8000423L)
+
+//
+// MessageId: hrInvalidCountry
+//
+// MessageText:
+//
+// The country code is either not known or is not valid.
+//
+#define hrInvalidCountry ((HRESULT)0xC8000425L)
+
+//
+// MessageId: hrInvalidLanguageId
+//
+// MessageText:
+//
+// The language ID is either not known or is not valid.
+//
+#define hrInvalidLanguageId ((HRESULT)0xC8000426L)
+
+//
+// MessageId: hrInvalidCodePage
+//
+// MessageText:
+//
+// The code page is either not known or is not valid.
+//
+#define hrInvalidCodePage ((HRESULT)0xC8000427L)
+
+//
+// MessageId: hrNoWriteLock
+//
+// MessageText:
+//
+// There is no write lock at transaction level 0.
+//
+#define hrNoWriteLock ((HRESULT)0x8800042BL)
+
+//
+// MessageId: hrColumnSetNull
+//
+// MessageText:
+//
+// The column value is set to null.
+//
+#define hrColumnSetNull ((HRESULT)0x8800042CL)
+
+//
+// MessageId: hrVersionStoreOutOfMemory
+//
+// MessageText:
+//
+// lMaxVerPages exceeded (XJET only)
+//
+#define hrVersionStoreOutOfMemory ((HRESULT)0xC800042DL)
+
+//
+// MessageId: hrCurrencyStackOutOfMemory
+//
+// MessageText:
+//
+// Out of cursors.
+//
+#define hrCurrencyStackOutOfMemory ((HRESULT)0xC800042EL)
+
+//
+// MessageId: hrOutOfSessions
+//
+// MessageText:
+//
+// Out of sessions.
+//
+#define hrOutOfSessions ((HRESULT)0xC800044DL)
+
+//
+// MessageId: hrWriteConflict
+//
+// MessageText:
+//
+// The write lock failed due to an outstanding write lock.
+//
+#define hrWriteConflict ((HRESULT)0xC800044EL)
+
+//
+// MessageId: hrTransTooDeep
+//
+// MessageText:
+//
+// The transactions are nested too deeply.
+//
+#define hrTransTooDeep ((HRESULT)0xC800044FL)
+
+//
+// MessageId: hrInvalidSesid
+//
+// MessageText:
+//
+// The session handle is not valid.
+//
+#define hrInvalidSesid ((HRESULT)0xC8000450L)
+
+//
+// MessageId: hrSessionWriteConflict
+//
+// MessageText:
+//
+// Another session has a private version of the page.
+//
+#define hrSessionWriteConflict ((HRESULT)0xC8000453L)
+
+//
+// MessageId: hrInTransaction
+//
+// MessageText:
+//
+// The operation is not allowed within a transaction.
+//
+#define hrInTransaction ((HRESULT)0xC8000454L)
+
+//
+// MessageId: hrDatabaseDuplicate
+//
+// MessageText:
+//
+// The database already exists.
+//
+#define hrDatabaseDuplicate ((HRESULT)0xC80004B1L)
+
+//
+// MessageId: hrDatabaseInUse
+//
+// MessageText:
+//
+// The database is in use.
+//
+#define hrDatabaseInUse ((HRESULT)0xC80004B2L)
+
+//
+// MessageId: hrDatabaseNotFound
+//
+// MessageText:
+//
+// The database does not exist.
+//
+#define hrDatabaseNotFound ((HRESULT)0xC80004B3L)
+
+//
+// MessageId: hrDatabaseInvalidName
+//
+// MessageText:
+//
+// The database name is not valid.
+//
+#define hrDatabaseInvalidName ((HRESULT)0xC80004B4L)
+
+//
+// MessageId: hrDatabaseInvalidPages
+//
+// MessageText:
+//
+// The number of pages is not valid.
+//
+#define hrDatabaseInvalidPages ((HRESULT)0xC80004B5L)
+
+//
+// MessageId: hrDatabaseCorrupted
+//
+// MessageText:
+//
+// The database file is either damaged or cannot be found.
+//
+#define hrDatabaseCorrupted ((HRESULT)0xC80004B6L)
+
+//
+// MessageId: hrDatabaseLocked
+//
+// MessageText:
+//
+// The database is locked.
+//
+#define hrDatabaseLocked ((HRESULT)0xC80004B7L)
+
+//
+// MessageId: hrTableEmpty
+//
+// MessageText:
+//
+// An empty table was opened.
+//
+#define hrTableEmpty ((HRESULT)0x88000515L)
+
+//
+// MessageId: hrTableLocked
+//
+// MessageText:
+//
+// The table is locked.
+//
+#define hrTableLocked ((HRESULT)0xC8000516L)
+
+//
+// MessageId: hrTableDuplicate
+//
+// MessageText:
+//
+// The table already exists.
+//
+#define hrTableDuplicate ((HRESULT)0xC8000517L)
+
+//
+// MessageId: hrTableInUse
+//
+// MessageText:
+//
+// Unable to lock the table because it is already in use.
+//
+#define hrTableInUse ((HRESULT)0xC8000518L)
+
+//
+// MessageId: hrObjectNotFound
+//
+// MessageText:
+//
+// The table or object does not exist.
+//
+#define hrObjectNotFound ((HRESULT)0xC8000519L)
+
+//
+// MessageId: hrCannotRename
+//
+// MessageText:
+//
+// Unable to rename the temporary file.
+//
+#define hrCannotRename ((HRESULT)0xC800051AL)
+
+//
+// MessageId: hrDensityInvalid
+//
+// MessageText:
+//
+// The file/index density is not valid.
+//
+#define hrDensityInvalid ((HRESULT)0xC800051BL)
+
+//
+// MessageId: hrTableNotEmpty
+//
+// MessageText:
+//
+// Unable to define the clustered index.
+//
+#define hrTableNotEmpty ((HRESULT)0xC800051CL)
+
+//
+// MessageId: hrInvalidTableId
+//
+// MessageText:
+//
+// The table ID is not valid.
+//
+#define hrInvalidTableId ((HRESULT)0xC800051EL)
+
+//
+// MessageId: hrTooManyOpenTables
+//
+// MessageText:
+//
+// Unable to open any more tables.
+//
+#define hrTooManyOpenTables ((HRESULT)0xC800051FL)
+
+//
+// MessageId: hrIllegalOperation
+//
+// MessageText:
+//
+// The operation is not supported on tables.
+//
+#define hrIllegalOperation ((HRESULT)0xC8000520L)
+
+//
+// MessageId: hrObjectDuplicate
+//
+// MessageText:
+//
+// The table or object name is already being used.
+//
+#define hrObjectDuplicate ((HRESULT)0xC8000522L)
+
+//
+// MessageId: hrInvalidObject
+//
+// MessageText:
+//
+// The object is not valid for operation.
+//
+#define hrInvalidObject ((HRESULT)0xC8000524L)
+
+//
+// MessageId: hrIndexCantBuild
+//
+// MessageText:
+//
+// Unable to build a clustered index.
+//
+#define hrIndexCantBuild ((HRESULT)0xC8000579L)
+
+//
+// MessageId: hrIndexHasPrimary
+//
+// MessageText:
+//
+// The primary index is already defined.
+//
+#define hrIndexHasPrimary ((HRESULT)0xC800057AL)
+
+//
+// MessageId: hrIndexDuplicate
+//
+// MessageText:
+//
+// The index is already defined.
+//
+#define hrIndexDuplicate ((HRESULT)0xC800057BL)
+
+//
+// MessageId: hrIndexNotFound
+//
+// MessageText:
+//
+// The index does not exist.
+//
+#define hrIndexNotFound ((HRESULT)0xC800057CL)
+
+//
+// MessageId: hrIndexMustStay
+//
+// MessageText:
+//
+// Unable to delete a clustered index.
+//
+#define hrIndexMustStay ((HRESULT)0xC800057DL)
+
+//
+// MessageId: hrIndexInvalidDef
+//
+// MessageText:
+//
+// The index definition is illegal.
+//
+#define hrIndexInvalidDef ((HRESULT)0xC800057EL)
+
+//
+// MessageId: hrIndexHasClustered
+//
+// MessageText:
+//
+// The clustered index is already defined.
+//
+#define hrIndexHasClustered ((HRESULT)0xC8000580L)
+
+//
+// MessageId: hrCreateIndexFailed
+//
+// MessageText:
+//
+// Unable to create the index because an error occurred while creating a table.
+//
+#define hrCreateIndexFailed ((HRESULT)0x88000581L)
+
+//
+// MessageId: hrTooManyOpenIndexes
+//
+// MessageText:
+//
+// Out of index description blocks.
+//
+#define hrTooManyOpenIndexes ((HRESULT)0xC8000582L)
+
+//
+// MessageId: hrColumnLong
+//
+// MessageText:
+//
+// The column value is too long.
+//
+#define hrColumnLong ((HRESULT)0xC80005DDL)
+
+//
+// MessageId: hrColumnDoesNotFit
+//
+// MessageText:
+//
+// The field will not fit in the record.
+//
+#define hrColumnDoesNotFit ((HRESULT)0xC80005DFL)
+
+//
+// MessageId: hrNullInvalid
+//
+// MessageText:
+//
+// The value cannot be null.
+//
+#define hrNullInvalid ((HRESULT)0xC80005E0L)
+
+//
+// MessageId: hrColumnIndexed
+//
+// MessageText:
+//
+// Unable to delete because the column is indexed.
+//
+#define hrColumnIndexed ((HRESULT)0xC80005E1L)
+
+//
+// MessageId: hrColumnTooBig
+//
+// MessageText:
+//
+// The length of the field exceeds the maximum length of 255 bytes.
+//
+#define hrColumnTooBig ((HRESULT)0xC80005E2L)
+
+//
+// MessageId: hrColumnNotFound
+//
+// MessageText:
+//
+// Unable to find the column.
+//
+#define hrColumnNotFound ((HRESULT)0xC80005E3L)
+
+//
+// MessageId: hrColumnDuplicate
+//
+// MessageText:
+//
+// The field is already defined.
+//
+#define hrColumnDuplicate ((HRESULT)0xC80005E4L)
+
+//
+// MessageId: hrColumn2ndSysMaint
+//
+// MessageText:
+//
+// Only one auto-increment or version column is allowed per table.
+//
+#define hrColumn2ndSysMaint ((HRESULT)0xC80005E6L)
+
+//
+// MessageId: hrInvalidColumnType
+//
+// MessageText:
+//
+// The column data type is not valid.
+//
+#define hrInvalidColumnType ((HRESULT)0xC80005E7L)
+
+//
+// MessageId: hrColumnMaxTruncated
+//
+// MessageText:
+//
+// The column was truncated because it exceeded the maximum length of 255 bytes.
+//
+#define hrColumnMaxTruncated ((HRESULT)0x880005E8L)
+
+//
+// MessageId: hrColumnCannotIndex
+//
+// MessageText:
+//
+// Unable to index a long value column.
+//
+#define hrColumnCannotIndex ((HRESULT)0xC80005E9L)
+
+//
+// MessageId: hrTaggedNotNULL
+//
+// MessageText:
+//
+// Tagged columns cannot be null.
+//
+#define hrTaggedNotNULL ((HRESULT)0xC80005EAL)
+
+//
+// MessageId: hrNoCurrentIndex
+//
+// MessageText:
+//
+// The entry is not valid without a current index.
+//
+#define hrNoCurrentIndex ((HRESULT)0xC80005EBL)
+
+//
+// MessageId: hrKeyIsMade
+//
+// MessageText:
+//
+// The key is completely made.
+//
+#define hrKeyIsMade ((HRESULT)0xC80005ECL)
+
+//
+// MessageId: hrBadColumnId
+//
+// MessageText:
+//
+// The column ID is not correct.
+//
+#define hrBadColumnId ((HRESULT)0xC80005EDL)
+
+//
+// MessageId: hrBadItagSequence
+//
+// MessageText:
+//
+// There is a bad instance identifier for a multivalued column.
+//
+#define hrBadItagSequence ((HRESULT)0xC80005EEL)
+
+//
+// MessageId: hrCannotBeTagged
+//
+// MessageText:
+//
+// AutoIncrement and Version cannot be multivalued.
+//
+#define hrCannotBeTagged ((HRESULT)0xC80005F1L)
+
+//
+// MessageId: hrRecordNotFound
+//
+// MessageText:
+//
+// Unable to find the key.
+//
+#define hrRecordNotFound ((HRESULT)0xC8000641L)
+
+//
+// MessageId: hrNoCurrentRecord
+//
+// MessageText:
+//
+// The currency is not on a record.
+//
+#define hrNoCurrentRecord ((HRESULT)0xC8000643L)
+
+//
+// MessageId: hrRecordClusteredChanged
+//
+// MessageText:
+//
+// A clustered key cannot be changed.
+//
+#define hrRecordClusteredChanged ((HRESULT)0xC8000644L)
+
+//
+// MessageId: hrKeyDuplicate
+//
+// MessageText:
+//
+// The key already exists.
+//
+#define hrKeyDuplicate ((HRESULT)0xC8000645L)
+
+//
+// MessageId: hrAlreadyPrepared
+//
+// MessageText:
+//
+// The current entry has already been copied or cleared.
+//
+#define hrAlreadyPrepared ((HRESULT)0xC8000647L)
+
+//
+// MessageId: hrKeyNotMade
+//
+// MessageText:
+//
+// No key was made.
+//
+#define hrKeyNotMade ((HRESULT)0xC8000648L)
+
+//
+// MessageId: hrUpdateNotPrepared
+//
+// MessageText:
+//
+// Update was not prepared.
+//
+#define hrUpdateNotPrepared ((HRESULT)0xC8000649L)
+
+//
+// MessageId: hrwrnDataHasChanged
+//
+// MessageText:
+//
+// Data has changed.
+//
+#define hrwrnDataHasChanged ((HRESULT)0x8800064AL)
+
+//
+// MessageId: hrerrDataHasChanged
+//
+// MessageText:
+//
+// The operation was abandoned because data has changed.
+//
+#define hrerrDataHasChanged ((HRESULT)0xC800064BL)
+
+//
+// MessageId: hrKeyChanged
+//
+// MessageText:
+//
+// Moved to a new key.
+//
+#define hrKeyChanged ((HRESULT)0x88000652L)
+
+//
+// MessageId: hrTooManySorts
+//
+// MessageText:
+//
+// There are too many sort processes.
+//
+#define hrTooManySorts ((HRESULT)0xC80006A5L)
+
+//
+// MessageId: hrInvalidOnSort
+//
+// MessageText:
+//
+// An operation that is not valid occurred in the sort.
+//
+#define hrInvalidOnSort ((HRESULT)0xC80006A6L)
+
+//
+// MessageId: hrTempFileOpenError
+//
+// MessageText:
+//
+// Unable to open the temporary file.
+//
+#define hrTempFileOpenError ((HRESULT)0xC800070BL)
+
+//
+// MessageId: hrTooManyAttachedDatabases
+//
+// MessageText:
+//
+// There are too many databases open.
+//
+#define hrTooManyAttachedDatabases ((HRESULT)0xC800070DL)
+
+//
+// MessageId: hrDiskFull
+//
+// MessageText:
+//
+// The disk is full.
+//
+#define hrDiskFull ((HRESULT)0xC8000710L)
+
+//
+// MessageId: hrPermissionDenied
+//
+// MessageText:
+//
+// Permission is denied.
+//
+#define hrPermissionDenied ((HRESULT)0xC8000711L)
+
+//
+// MessageId: hrFileNotFound
+//
+// MessageText:
+//
+// Unable to find the file.
+//
+#define hrFileNotFound ((HRESULT)0xC8000713L)
+
+//
+// MessageId: hrFileOpenReadOnly
+//
+// MessageText:
+//
+// The database file is read only.
+//
+#define hrFileOpenReadOnly ((HRESULT)0x88000715L)
+
+//
+// MessageId: hrAfterInitialization
+//
+// MessageText:
+//
+// Unable to restore after initialization.
+//
+#define hrAfterInitialization ((HRESULT)0xC800073AL)
+
+//
+// MessageId: hrLogCorrupted
+//
+// MessageText:
+//
+// The database log files are damaged.
+//
+#define hrLogCorrupted ((HRESULT)0xC800073CL)
+
+//
+// MessageId: hrInvalidOperation
+//
+// MessageText:
+//
+// The operation is not valid.
+//
+#define hrInvalidOperation ((HRESULT)0xC8000772L)
+
+//
+// MessageId: hrAccessDenied
+//
+// MessageText:
+//
+// Access is denied.
+//
+#define hrAccessDenied ((HRESULT)0xC8000773L)
+
+#endif // _EDBMSG_
diff --git a/private/utils/ntbackup/exchange/inc/jet.h b/private/utils/ntbackup/exchange/inc/jet.h
new file mode 100644
index 000000000..7ced38f62
--- /dev/null
+++ b/private/utils/ntbackup/exchange/inc/jet.h
@@ -0,0 +1,1804 @@
+#if !defined(_JET_INCLUDED)
+#define _JET_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(_M_ALPHA)
+#pragma pack(8)
+#else
+#pragma pack(4)
+#endif
+
+#define JET_API __stdcall
+#define JET_NODSAPI __stdcall
+
+typedef long JET_ERR;
+
+typedef unsigned long JET_INSTANCE; /* Instance Identifier */
+typedef unsigned long JET_SESID; /* Session Identifier */
+typedef unsigned long JET_TABLEID; /* Table Identifier */
+typedef unsigned long JET_COLUMNID; /* Column Identifier */
+
+typedef unsigned long JET_DBID; /* Database Identifier */
+typedef unsigned long JET_OBJTYP; /* Object Type */
+typedef unsigned long JET_COLTYP; /* Column Type */
+typedef unsigned long JET_GRBIT; /* Group of Bits */
+typedef unsigned long JET_ACM; /* Access Mask */
+typedef unsigned long JET_RNT; /* Repair Notification Type */
+
+typedef unsigned long JET_SNP; /* Status Notification Process */
+typedef unsigned long JET_SNT; /* Status Notification Type */
+typedef unsigned long JET_SNC; /* Status Notification Code */
+typedef double JET_DATESERIAL; /* JET_coltypDateTime format */
+typedef unsigned long JET_HANDLE; /* backup file handle */
+
+typedef JET_ERR (__stdcall *JET_PFNSTATUS)(JET_SESID sesid, JET_SNP snp, JET_SNT snt, void *pv);
+
+typedef struct tagCONVERT
+ {
+ char *szOldDll;
+ char *szOldSysDb;
+ unsigned long fDbAttached; // Return value indicating if Db was attached
+ } JET_CONVERT;
+
+
+typedef enum
+ {
+ opDBUTILConsistency,
+ opDBUTILDumpData,
+ opDBUTILDumpMetaData,
+ opDBUTILDumpSpace,
+ opDBUTILDumpHeader,
+ opDBUTILDumpLogfile,
+ opDBUTILDumpCheckpoint
+ } DBUTIL_OP;
+
+typedef struct tagDBUTIL
+ {
+ unsigned long cbStruct;
+ char *szDatabase;
+ char *szTable;
+ char *szIndex;
+ DBUTIL_OP op;
+ JET_GRBIT grbitOptions;
+ } JET_DBUTIL;
+
+#define JET_bitDBUtilOptionAllNodes 0x00000001
+#define JET_bitDBUtilOptionKeyStats 0x00000002
+#define JET_bitDBUtilOptionPageDump 0x00000004
+#define JET_bitDBUtilOptionDumpVerbose 0x10000000 // DEBUG only
+
+
+ /* Session information bits */
+
+#define JET_bitCIMCommitted 0x00000001
+#define JET_bitCIMDirty 0x00000002
+#define JET_bitAggregateTransaction 0x00000008
+
+ /* JetGetLastErrorInfo structure */
+
+typedef struct
+ {
+ unsigned long cbStruct; /* Size of this structure */
+ JET_ERR err; /* Extended error code (if any) */
+ unsigned long ul1; /* First general purpose integer */
+ unsigned long ul2; /* Second general purpose integer */
+ unsigned long ul3; /* Third general purpose integer */
+ } JET_EXTERR;
+
+ /* Status Notification Structures */
+
+typedef struct /* Status Notification Progress */
+ {
+ unsigned long cbStruct; /* Size of this structure */
+ unsigned long cunitDone; /* Number of units of work completed */
+ unsigned long cunitTotal; /* Total number of units of work */
+ } JET_SNPROG;
+
+ /* ErrCount Notification Structures */
+
+typedef struct /* Status Notification Progress */
+ {
+ unsigned long cbStruct; /* Size of this structure */
+ unsigned long cRecUniqueKeyViolation;
+ unsigned long cRecTypeConversionFail;
+ unsigned long cRecRecordLocked;
+ unsigned long cRecTotal; /* Total number of units of work */
+ } JET_SNERRCNT;
+
+
+typedef struct /* Status Notification Message */
+ {
+ unsigned long cbStruct; /* Size of this structure */
+ JET_SNC snc; /* Status Notification Code */
+ unsigned long ul; /* Numeric identifier */
+ char sz[256]; /* Identifier */
+ } JET_SNMSG;
+
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ JET_OBJTYP objtyp;
+ JET_DATESERIAL dtCreate;
+ JET_DATESERIAL dtUpdate;
+ JET_GRBIT grbit;
+ unsigned long flags;
+ unsigned long cRecord;
+ unsigned long cPage;
+ } JET_OBJECTINFO;
+
+
+/* required for Exchange to make RSTMAP RPC capable
+/**/
+#ifdef MIDL_PASS
+#define RPC_STRING [string]
+#else
+#define RPC_STRING
+typedef unsigned short WCHAR;
+#endif
+
+typedef struct
+ {
+ RPC_STRING char *szDatabaseName;
+ RPC_STRING char *szNewDatabaseName;
+ } JET_RSTMAP; /* restore map */
+
+/* required for Exchange unicode support
+/**/
+#define UNICODE_RSTMAP
+
+typedef struct tagJET_RSTMAPW {
+ RPC_STRING WCHAR *wszDatabaseName;
+
+ RPC_STRING WCHAR *wszNewDatabaseName;
+ } JET_RSTMAPW, *PJET_RSTMAPW;
+
+ /* The following flags appear in the grbit field above */
+
+#define JET_bitTableInfoUpdatable 0x00000001
+#define JET_bitTableInfoBookmark 0x00000002
+#define JET_bitTableInfoRollback 0x00000004
+#define JET_bitTableInfoRestartable 0x00000008
+#define JET_bitTableInfoNoInserts 0x00000010
+
+ /* The following flags occur in the flags field above */
+
+#define JET_bitSaveUIDnPWD 0x20000000 /* this bit is only */
+ /* appropriate for rmt links */
+#define JET_bitObjectExclusive 0x40000000 /* Open link exclusively */
+#define JET_bitObjectSystem 0x80000000
+
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ JET_TABLEID tableid;
+ unsigned long cRecord;
+ JET_COLUMNID columnidcontainername;
+ JET_COLUMNID columnidobjectname;
+ JET_COLUMNID columnidobjtyp;
+ JET_COLUMNID columniddtCreate;
+ JET_COLUMNID columniddtUpdate;
+ JET_COLUMNID columnidgrbit;
+ JET_COLUMNID columnidflags;
+ JET_COLUMNID columnidcRecord; /* Level 2 info */
+ JET_COLUMNID columnidcPage; /* Level 2 info */
+ } JET_OBJECTLIST;
+
+#define cObjectInfoCols 9
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ JET_TABLEID tableid;
+ unsigned long cRecord;
+ JET_COLUMNID columnidSid;
+ JET_COLUMNID columnidACM;
+ JET_COLUMNID columnidgrbit; /* grbit from JetSetAccess */
+ } JET_OBJECTACMLIST;
+
+#define cObjectAcmCols 3
+
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ JET_TABLEID tableid;
+ unsigned long cRecord;
+ JET_COLUMNID columnidPresentationOrder;
+ JET_COLUMNID columnidcolumnname;
+ JET_COLUMNID columnidcolumnid;
+ JET_COLUMNID columnidcoltyp;
+ JET_COLUMNID columnidCountry;
+ JET_COLUMNID columnidLangid;
+ JET_COLUMNID columnidCp;
+ JET_COLUMNID columnidCollate;
+ JET_COLUMNID columnidcbMax;
+ JET_COLUMNID columnidgrbit;
+ JET_COLUMNID columnidDefault;
+ JET_COLUMNID columnidBaseTableName;
+ JET_COLUMNID columnidBaseColumnName;
+ JET_COLUMNID columnidDefinitionName;
+ } JET_COLUMNLIST;
+
+#define cColumnInfoCols 14
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ JET_COLUMNID columnid;
+ JET_COLTYP coltyp;
+ unsigned short wCountry;
+ unsigned short langid;
+ unsigned short cp;
+ unsigned short wCollate; /* Must be 0 */
+ unsigned long cbMax;
+ JET_GRBIT grbit;
+ } JET_COLUMNDEF;
+
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ JET_COLUMNID columnid;
+ JET_COLTYP coltyp;
+ unsigned short wCountry;
+ unsigned short langid;
+ unsigned short cp;
+ unsigned short wFiller; /* Must be 0 */
+ unsigned long cbMax;
+ JET_GRBIT grbit;
+ char szBaseTableName[256];
+ char szBaseColumnName[256];
+ } JET_COLUMNBASE;
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ JET_TABLEID tableid;
+ unsigned long cRecord;
+ JET_COLUMNID columnidindexname;
+ JET_COLUMNID columnidgrbitIndex;
+ JET_COLUMNID columnidcKey;
+ JET_COLUMNID columnidcEntry;
+ JET_COLUMNID columnidcPage;
+ JET_COLUMNID columnidcColumn;
+ JET_COLUMNID columnidiColumn;
+ JET_COLUMNID columnidcolumnid;
+ JET_COLUMNID columnidcoltyp;
+ JET_COLUMNID columnidCountry;
+ JET_COLUMNID columnidLangid;
+ JET_COLUMNID columnidCp;
+ JET_COLUMNID columnidCollate;
+ JET_COLUMNID columnidgrbitColumn;
+ JET_COLUMNID columnidcolumnname;
+ } JET_INDEXLIST;
+
+
+
+typedef struct tag_JET_COLUMNCREATE
+ {
+ unsigned long cbStruct; // size of this structure (for future expansion)
+ char *szColumnName; // column name
+ JET_COLTYP coltyp; // column type
+ unsigned long cbMax; // the maximum length of this column (only relevant for binary and text columns)
+ JET_GRBIT grbit; // column options
+ void *pvDefault; // default value (NULL if none)
+ unsigned long cbDefault; // length of default value
+ unsigned long cp; // code page (for text columns only)
+ JET_COLUMNID columnid; // returned column id
+ JET_ERR err; // returned error code
+ } JET_COLUMNCREATE;
+
+
+typedef struct tagJET_INDEXCREATE
+ {
+ unsigned long cbStruct; // size of this structure (for future expansion)
+ char *szIndexName; // index name
+ char *szKey; // index key
+ unsigned long cbKey; // length of key
+ JET_GRBIT grbit; // index options
+ unsigned long ulDensity; // index density
+ JET_ERR err; // returned error code
+ } JET_INDEXCREATE;
+
+
+typedef struct tagJET_TABLECREATE
+ {
+ unsigned long cbStruct; // size of this structure (for future expansion)
+ char *szTableName; // name of table to create.
+ unsigned long ulPages; // initial pages to allocate for table.
+ unsigned long ulDensity; // table density.
+ JET_COLUMNCREATE *rgcolumncreate; // array of column creation info
+ unsigned long cColumns; // number of columns to create
+ JET_INDEXCREATE *rgindexcreate; // array of index creation info
+ unsigned long cIndexes; // number of indexes to create
+ JET_GRBIT grbit; // Abort column/index creation on error?
+ JET_TABLEID tableid; // returned tableid.
+ unsigned long cCreated; // count of objects created (columns+table+indexes).
+ } JET_TABLECREATE;
+
+
+#define cIndexInfoCols 15
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ JET_TABLEID tableid;
+ unsigned long cRecord;
+ JET_COLUMNID columnidReferenceName;
+ JET_COLUMNID columnidgrbit;
+ JET_COLUMNID columnidcColumn;
+ JET_COLUMNID columnidiColumn;
+ JET_COLUMNID columnidReferencingTableName;
+ JET_COLUMNID columnidReferencingColumnName;
+ JET_COLUMNID columnidReferencedTableName;
+ JET_COLUMNID columnidReferencedColumnName;
+ } JET_RELATIONSHIPLIST;
+
+/* for backward compatibility */
+typedef JET_RELATIONSHIPLIST JET_REFERENCELIST;
+
+#define cReferenceInfoCols 8
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ unsigned long ibLongValue;
+ unsigned long itagSequence;
+ JET_COLUMNID columnidNextTagged;
+ } JET_RETINFO;
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ unsigned long ibLongValue;
+ unsigned long itagSequence;
+ } JET_SETINFO;
+
+typedef struct
+ {
+ unsigned long cbStruct;
+ unsigned long centriesLT;
+ unsigned long centriesInRange;
+ unsigned long centriesTotal;
+ } JET_RECPOS;
+
+typedef struct
+ {
+ unsigned long cDiscont;
+ unsigned long cUnfixedMessyPage;
+ unsigned long centriesLT;
+ unsigned long centriesTotal;
+ unsigned long cpgCompactFreed;
+ } JET_OLCSTAT;
+
+typedef struct
+ {
+ unsigned long ctableid;
+ JET_TABLEID rgtableid[1];
+ } JET_MGBLIST;
+
+/*** Property Manager Structure ***/
+typedef struct
+ {
+ unsigned long cbStruct;
+ JET_TABLEID tableid;
+ JET_COLUMNID columnidColumnName;
+ JET_COLUMNID columnidPropertyName;
+ JET_COLUMNID columnidGrbit;
+ JET_COLUMNID columnidPropertyValue;
+ JET_COLUMNID columnidColtyp;
+ } JET_PROPERTYLIST;
+
+
+/************************************************************************/
+/************************* JET CONSTANTS ************************/
+/************************************************************************/
+
+#define JET_tableidNil ((JET_TABLEID) 0xFFFFFFFF)
+
+#define JET_sesidNil ((JET_SESID) 0xFFFFFFFF)
+
+ /* Max size of a bookmark */
+
+#define JET_cbBookmarkMost 4
+
+ /* Max length of a object/column/index/property name */
+
+#define JET_cbNameMost 64
+
+ /* Max length of a "name.name.name..." construct */
+
+#define JET_cbFullNameMost 255
+
+ /* Max size of long-value column chunk */
+
+#define JET_cbColumnLVChunkMost 4035
+
+ /* Max size of non-long-value column data */
+
+#define JET_cbColumnMost 255
+
+ /* Max size of a sort/index key */
+
+#define JET_cbKeyMost 255
+
+ /* Max number of components in a sort/index key */
+
+#define JET_ccolKeyMost 12
+
+ /* Max number of columns in a table/query */
+
+#define JET_ccolTableMost 255
+
+ /* Max Length of a property in the property manager */
+#define JET_cbPropertyMost 2048
+
+ /* Largest initial substring of a long value used in an expression */
+
+#define JET_cbExprLVMost 0x8000L /*** 32 K ***/
+
+ /* Max size of returned (from SQLDriverConnect) conn string */
+
+#define JET_cbConnectMost 255
+
+ /* Max number of levels in an MGB */
+
+#define JET_wGroupLevelMax 12
+
+ /* Size restrictions for Pins */
+#define JET_cchPINMax 20
+#define JET_cchPINMin 4
+
+ /* System parameter codes for JetSetSystemParameter */
+
+/* not supported */
+#define JET_paramPfnStatus 2 /* Status callback function */
+#define JET_paramPfnError 3 /* Error callback function */
+#define JET_paramHwndODBC 4 /* Window handle for ODBC use */
+#define JET_paramIniPath 5 /* Path to the ini file */
+#define JET_paramPageTimeout 6 /* Red ISAM page timeout value */
+#define JET_paramODBCQueryTimeout 7 /* ODBC async query timeout value */
+#define JET_paramODBCLoginTimeout 25 /* ODBC connection attempt timeout value */
+#define JET_paramExprObject 26 /* Expression Evaluation callback */
+#define JET_paramGetTypeComp 27 /* Expression Evaluation callback */
+#define JET_paramHostVersion 28 /* Host Version callback */
+#define JET_paramSQLTraceMode 29 /* Enable/disable SQL tracing */
+#define JET_paramEventId 46 /* NT event id */
+#define JET_paramEventCategory 47 /* NT event category */
+#define JET_paramRmtXactIsolation 39 /* Do not share connections with other sessions */
+#define JET_paramJetInternal 35 /* Whether internal to JET; if set, allows ISAM to do things which are prevented in general */
+#define JET_paramFullQJet 38 /* Allow full QJet functionality */
+
+#define JET_paramLogFlushThreshold 18 /* log buffer flush threshold in 512 bytes [10] */
+#define JET_paramLogFlushPeriod 22 /* log flush period in miliseconds [45] */
+
+#define JET_paramOnLineCompact 37 /* Options for compact pages on-line */
+#define JET_paramRecovery 30 /* Switch for log on/off */
+
+/* debug only not supported */
+#define JET_paramTransactionLevel 32 /* Transaction level of session */
+#define JET_paramAssertAction 44 /* debug only determines action on assert */
+#define JET_paramPrintFunction 49 /* debug only. synched print function */
+#define JET_paramRFS2IOsPermitted 54 /* # IOs permitted to succeed (-1 = all) */
+#define JET_paramRFS2AllocsPermitted 55 /* # allocs permitted to success (-1 = all) */
+
+/* fully supported parameters */
+/* Note that one page = 4kBytes.
+/**/
+#define JET_paramSysDbPath 0 /* path to the system database (defunct) ["<base name>.<base ext>"] */
+#define JET_paramSystemPath 0 /* path to check point file ["."] */
+#define JET_paramTempPath 1 /* path to the temporary database ["."] */
+#define JET_paramMaxBuffers 8 /* maximum page cache size in pages [512] */
+#define JET_paramMaxSessions 9 /* maximum number of sessions [128] */
+#define JET_paramMaxOpenTables 10 /* maximum number of open tables [300] */
+#define JET_paramPreferredMaxOpenTables 59 /* prefered maximum number of open tables [300] */
+#define JET_paramMaxVerPages 11 /* maximum version store size in 16KB buckets [64] */
+#define JET_paramMaxCursors 12 /* maximum number of open cursors [1024] */
+#define JET_paramLogFilePath 13 /* path to the log file directory ["."] */
+#define JET_paramMaxOpenTableIndexes 14 /* maximum open table indexes [300] */
+#define JET_paramMaxTemporaryTables 15 /* maximum concurrent JetCreateIndex [20] */
+#define JET_paramLogBuffers 16 /* maximum log buffers in 512 bytes [21] */
+#define JET_paramLogFileSize 17 /* maximum log file size in kBytes [5120] */
+#define JET_paramBfThrshldLowPrcnt 19 /* low percentage clean buffer flush start [20] */
+#define JET_paramBfThrshldHighPrcnt 20 /* high percentage clean buffer flush stop [80] */
+#define JET_paramWaitLogFlush 21 /* log flush wait time in milliseconds [15] */
+#define JET_paramLogCheckpointPeriod 23 /* checkpoint period in 512 bytes [1024] */
+#define JET_paramLogWaitingUserMax 24 /* maximum sessions waiting log flush [3] */
+#define JET_paramSessionInfo 33 /* per session information [0] */
+#define JET_paramPageFragment 34 /* maximum disk extent considered fragment in pages [8] */
+#define JET_paramMaxOpenDatabases 36 /* maximum number of open databases [100] */
+#define JET_paramBufBatchIOMax 41 /* maximum batch IO in pages [64] */
+#define JET_paramPageReadAheadMax 42 /* maximum read-ahead IO in pages [20] */
+#define JET_paramAsynchIOMax 43 /* maximum asynchronous IO in pages [64] */
+#define JET_paramEventSource 45 /* language independant process descriptor string [""] */
+#define JET_paramDbExtensionSize 48 /* database extension size in pages [16] */
+#define JET_paramCommitDefault 50 /* default grbit for JetCommitTransaction [0] */
+#define JET_paramBufLogGenAgeThreshold 51 /* age threshold in log files [2] */
+#define JET_paramCircularLog 52 /* boolean flag for circular logging [0] */
+#define JET_paramPageTempDBMin 53 /* minimum size temporary database in pages [0] */
+#define JET_paramBaseName 56 /* base name for all DBMS object names ["edb"] */
+#define JET_paramBaseExtension 57 /* base extension for all DBMS object names ["edb"] */
+#define JET_paramTableClassName 58 /* table stats class name (class #, string) */
+
+ /* Flags for JetTerm2 */
+
+#define JET_bitTermComplete 0x00000001
+#define JET_bitTermAbrupt 0x00000002
+
+ /* Flags for JetIdle */
+
+#define JET_bitIdleRemoveReadLocks 0x00000001
+#define JET_bitIdleFlushBuffers 0x00000002
+#define JET_bitIdleCompact 0x00000004
+#define JET_bitIdleStatus 0x80000000
+
+ /* Flags for JetEndSession */
+
+#define JET_bitForceSessionClosed 0x00000001
+
+ /* Flags for JetOpenDatabase */
+
+#define JET_bitDbReadOnly 0x00000001
+#define JET_bitDbExclusive 0x00000002 /* multiple opens allowed */
+#define JET_bitDbRemoteSilent 0x00000004
+#define JET_bitDbSingleExclusive 0x00000008 /* opened exactly once */
+
+ /* Flags for JetCloseDatabase */
+
+#define JET_bitDbForceClose 0x00000001
+
+ /* Flags for JetCreateDatabase */
+
+#define JET_bitDbVersion10 0x00000002 /* INTERNAL USE ONLY */
+#define JET_bitDbVersion1x 0x00000004
+#define JET_bitDbRecoveryOff 0x00000008 /* disable logging/recovery for this database */
+#define JET_bitDbNoLogging JET_bitDbRecoveryOff
+#define JET_bitDbCompleteConnstr 0x00000020
+#define JET_bitDbVersioningOff 0x00000040
+
+ /* Flags for JetBackup */
+
+#define JET_bitBackupIncremental 0x00000001
+#define JET_bitKeepOldLogs 0x00000002
+#define JET_bitBackupAtomic 0x00000004
+
+ /* Database types */
+
+#define JET_dbidNil ((JET_DBID) 0xFFFFFFFF)
+#define JET_dbidNoValid ((JET_DBID) 0xFFFFFFFE) /* used as a flag to indicate that there is no valid dbid */
+
+ /* Flags for JetCreateLink */
+
+/* Can use JET_bitObjectExclusive to cause linked to database to be opened */
+/* exclusively. */
+
+
+
+ /* Flags for JetCreateTableColumnIndex */
+#define JET_bitTableCreateCheckColumnNames 0x00000001 /* Ensures that each column
+ /* specified in the JET_COLUMNCREATE
+ /* array has a unique name
+ /* (for performance reasons,
+ /* the default is to NOT perform
+ /* this check and rely on the
+ /* function caller to ensure
+ /* column name uniqueness).
+ /**/
+#define JET_bitTableCreateCompaction 0x40000000 /* Internal grbit used when
+ /* creating a table during
+ /* off-line compact.
+ /**/
+#define JET_bitTableCreateSystemTable 0x80000000 /* Internal grbit used when
+ /* creating system tables.
+ /**/
+
+
+ /* Flags for JetAddColumn, JetGetColumnInfo, JetOpenTempTable */
+
+#define JET_bitColumnFixed 0x00000001
+#define JET_bitColumnTagged 0x00000002
+#define JET_bitColumnNotNULL 0x00000004
+#define JET_bitColumnVersion 0x00000008
+#define JET_bitColumnAutoincrement 0x00000010
+#define JET_bitColumnUpdatable 0x00000020 /* JetGetColumnInfo only */
+#define JET_bitColumnTTKey 0x00000040 /* JetOpenTempTable only */
+#define JET_bitColumnTTDescending 0x00000080 /* JetOpenTempTable only */
+#define JET_bitColumnNotLast 0x00000100 /* Installable ISAM option */
+#define JET_bitColumnRmtGraphic 0x00000200 /* JetGetColumnInfo */
+#define JET_bitColumnMultiValued 0x00000400
+#define JET_bitColumnColumnGUID 0x00000800
+#define JET_bitColumnMostMany 0x00001000
+#define JET_bitColumnPreventDelete 0x00002000
+
+ /* Flags for JetSetCurrentIndex */
+
+#define JET_bitMoveFirst 0x00000000
+#define JET_bitMoveBeforeFirst 0x00000001
+#define JET_bitNoMove 0x00000002
+
+ /* Flags for JetMakeKey */
+
+#define JET_bitNewKey 0x00000001
+#define JET_bitStrLimit 0x00000002
+#define JET_bitSubStrLimit 0x00000004
+#define JET_bitNormalizedKey 0x00000008
+#define JET_bitKeyDataZeroLength 0x00000010
+
+#ifdef DBCS /* johnta: LIKE "ABC" not converted to ="ABC" for Japanese */
+#define JET_bitLikeExtra1 0x00000020
+#endif /* DBCS */
+
+ /* Flags for ErrDispSetIndexRange */
+
+#define JET_bitRangeInclusive 0x00000001
+#define JET_bitRangeUpperLimit 0x00000002
+#define JET_bitRangeInstantDuration 0x00000004
+#define JET_bitRangeRemove 0x00000008
+
+ /* Constants for JetMove */
+
+#define JET_MoveFirst (0x80000000)
+#define JET_MovePrevious (-1)
+#define JET_MoveNext (+1)
+#define JET_MoveLast (0x7fffffff)
+
+ /* Flags for JetMove */
+
+#define JET_bitMoveKeyNE 0x00000001
+#define JET_bitMoveCheckTS 0x00000002
+#define JET_bitMoveInPage 0x00000004
+
+ /* Flags for JetSeek */
+
+#define JET_bitSeekEQ 0x00000001
+#define JET_bitSeekLT 0x00000002
+#define JET_bitSeekLE 0x00000004
+#define JET_bitSeekGE 0x00000008
+#define JET_bitSeekGT 0x00000010
+#define JET_bitSetIndexRange 0x00000020
+
+ /* Flags for JetFastFind */
+
+#define JET_bitFFindBackwards 0x00000001
+#define JET_bitFFindFromCursor 0x00000004
+
+ /* Flags for JetCreateIndex */
+
+#define JET_bitIndexUnique 0x00000001
+#define JET_bitIndexPrimary 0x00000002
+#define JET_bitIndexDisallowNull 0x00000004
+#define JET_bitIndexIgnoreNull 0x00000008
+#define JET_bitIndexClustered 0x00000010
+#define JET_bitIndexIgnoreAnyNull 0x00000020
+#define JET_bitIndexIgnoreFirstNull 0x00000040
+#define JET_bitIndexLazyFlush 0x00000080
+#define JET_bitIndexEmptyTable 0x40000000 // Internal use only
+#define JET_bitIndexReference 0x80000000 /* IndexInfo only */
+
+ /* Flags for index key definition */
+
+#define JET_bitKeyAscending 0x00000000
+#define JET_bitKeyDescending 0x00000001
+
+
+ /* Flags for JetCreateRelationship */
+
+#define JET_bitRelationUnique 0x00000001
+#define JET_bitRelationDontEnforce 0x00000002
+#define JET_bitRelationInherited 0x00000004
+#define JET_bitRelationTestLegal 0x00000008 /* don't create relationship */
+
+#define JET_bitRelationshipMatchMask 0x000000F0
+#define JET_bitRelationMatchDefault 0x00000000
+#define JET_bitRelationMatchFull 0x00000010
+
+#define JET_bitRelationUpdateActionMask 0x00000F00
+#define JET_bitRelationUpdateDisallow 0x00000000
+#define JET_bitRelationUpdateCascade 0x00000100
+#define JET_bitRelationUpdateSetNull 0x00000200
+#define JET_bitRelationUpdateSetDefault 0x00000300
+
+#define JET_bitRelationDeleteActionMask 0x0000F000
+#define JET_bitRelationDeleteDisallow 0x00000000
+#define JET_bitRelationDeleteCascade 0x00001000
+#define JET_bitRelationDeleteSetNull 0x00002000
+#define JET_bitRelationDeleteSetDefault 0x00003000
+
+#define JET_bitRelationUserMask 0xFF000000 /* non-enforced values */
+#define JET_bitRelationJoinMask 0x03000000
+#define JET_bitRelationInner 0x00000000
+#define JET_bitRelationLeft 0x01000000
+#define JET_bitRelationRight 0x02000000
+
+
+ /* Flags for JetCreateReference/JetCreateRelationship */
+ /* NOTE: use the bitRelationship flags instead! */
+
+#define JET_ReferenceUnique JET_bitRelationUnique
+#define JET_ReferenceDontEnforce JET_bitRelationDontEnforce
+#define JET_ReferenceMatchTypeMask JET_bitRelationMatchMask
+#define JET_ReferenceMatchDefault JET_bitRelationMatchDefault
+#define JET_ReferenceMatchFull JET_bitRelationMatchFull
+#define JET_ReferenceUpdateActionMask JET_bitRelationUpdateActionMask
+#define JET_ReferenceUpdateDisallow JET_bitRelationUpdateDisallow
+#define JET_ReferenceUpdateCascade JET_bitRelationUpdateCascade
+#define JET_ReferenceUpdateSetNull JET_bitRelationUpdateSetNull
+#define JET_ReferenceUpdateSetDefault JET_bitRelationUpdateSetDefault
+#define JET_ReferenceDeleteActionMask JET_bitRelationDeleteActionMask
+#define JET_ReferenceDeleteDisallow JET_bitRelationDeleteDisallow
+#define JET_ReferenceDeleteCascade JET_bitRelationDeleteCascade
+#define JET_ReferenceDeleteSetNull JET_bitRelationDeleteSetNull
+#define JET_ReferenceDeleteSetDefault JET_bitRelationDeleteSetDefault
+
+
+ /* Flags for JetOpenTable */
+
+#define JET_bitTableDenyWrite 0x00000001
+#define JET_bitTableDenyRead 0x00000002
+#define JET_bitTableReadOnly 0x00000004
+#define JET_bitTableAppendOnly 0x00000008
+#define JET_bitTableUpdatable 0x00000010
+#define JET_bitTableScrollable 0x00000020
+#define JET_bitTableFixedSet 0x00000040 /* Fixed working set */
+#define JET_bitTableInconsistent 0x00000080
+#define JET_bitTableBulk 0x00000100
+#define JET_bitTableUsePrimaryIndex 0x00000200 /* Use with FixedSet */
+#define JET_bitTableSampleData 0x00000400
+#define JET_bitTableQuickBrowse 0x00000800 /* Bias optimizer toward index usage */
+#define JET_bitTableDDL 0x00001000 /* similar to JET_bitTableBulk, for DDL */
+#define JET_bitTablePassThrough 0x00002000 /* Remote DBs Only */
+#define JET_bitTableRowReturning 0x00004000
+#define JET_bitTableSequential 0x00008000 /* Intend to access table sequentially */
+
+#define JET_bitTableClassMask 0x000F0000 /* table stats class mask */
+#define JET_bitTableClassNone 0x00000000 /* table belongs to no stats class (default) */
+#define JET_bitTableClass1 0x00010000 /* table belongs to stats class 1 */
+#define JET_bitTableClass2 0x00020000 /* table belongs to stats class 2 */
+#define JET_bitTableClass3 0x00030000 /* table belongs to stats class 3 */
+#define JET_bitTableClass4 0x00040000 /* table belongs to stats class 4 */
+#define JET_bitTableClass5 0x00050000 /* table belongs to stats class 5 */
+#define JET_bitTableClass6 0x00060000 /* table belongs to stats class 6 */
+#define JET_bitTableClass7 0x00070000 /* table belongs to stats class 7 */
+#define JET_bitTableClass8 0x00080000 /* table belongs to stats class 8 */
+#define JET_bitTableClass9 0x00090000 /* table belongs to stats class 9 */
+#define JET_bitTableClass10 0x000A0000 /* table belongs to stats class 10 */
+#define JET_bitTableClass11 0x000B0000 /* table belongs to stats class 11 */
+#define JET_bitTableClass12 0x000C0000 /* table belongs to stats class 12 */
+#define JET_bitTableClass13 0x000D0000 /* table belongs to stats class 13 */
+#define JET_bitTableClass14 0x000E0000 /* table belongs to stats class 14 */
+#define JET_bitTableClass15 0x000F0000 /* table belongs to stats class 15 */
+
+ /* Flags for JetSetQoSql/JetRetrieveQoSql */
+#define JET_bitSqlPassThrough 0x00000001 /* Pass through Query returning records */
+#define JET_bitSqlSPTBulkOp 0x00000002 /* SPT query returning no table */
+
+ /* Flags for JetOpenVtQbe */
+
+#define JET_bitQBEAddBrackets 0x00000001
+#define JET_bitQBERemoveEquals 0x00000002
+
+ /* Flags for JetOpenTempTable and ErrIsamOpenTempTable */
+
+#define JET_bitTTIndexed 0x00000001 /* Allow seek */
+#define JET_bitTTUnique 0x00000002 /* Remove duplicates */
+#define JET_bitTTUpdatable 0x00000004 /* Allow updates */
+#define JET_bitTTScrollable 0x00000008 /* Allow backwards scrolling */
+
+ /* Flags for JetSetColumn */
+
+#define JET_bitSetAppendLV 0x00000001
+#define JET_bitSetValidate 0x00000002
+#define JET_bitSetOverwriteLV 0x00000004 /* overwrite JET_coltypLong* byte range */
+#define JET_bitSetSizeLV 0x00000008 /* set JET_coltypLong* size */
+#define JET_bitSetValidateColumn 0x00000010
+#define JET_bitSetZeroLength 0x00000020
+#define JET_bitSetSeparateLV 0x00000040 /* force LV separation */
+#define JET_bitSetNoVersion 0x00000080 /* INTERNAL USE ONLY */
+
+ /* Set column parameter structure for JetSetColumns */
+
+typedef struct {
+ JET_COLUMNID columnid;
+ const void *pvData;
+ unsigned long cbData;
+ JET_GRBIT grbit;
+ unsigned long ibLongValue;
+ unsigned long itagSequence;
+ JET_ERR err;
+} JET_SETCOLUMN;
+
+ /* Options for JetPrepareUpdate */
+
+#define JET_prepInsert 0
+#define JET_prepInsertBeforeCurrent 1
+#define JET_prepReplace 2
+#define JET_prepCancel 3
+#define JET_prepReplaceNoLock 4
+#define JET_prepInsertCopy 5
+
+ /* Flags for JetRetrieveColumn */
+
+#define JET_bitRetrieveCopy 0x00000001
+#define JET_bitRetrieveFromIndex 0x00000002
+#define JET_bitRetrieveCase 0x00000004
+#define JET_bitRetrieveTag 0x00000008
+#define JET_bitRetrieveNull 0x00000010 /* for columnid 0 only */
+#define JET_bitRetrieveIgnoreDefault 0x00000020 /* for columnid 0 only */
+#define JET_bitRetrieveLongId 0x00000040
+#define JET_bitRetrieveRecord 0x80000000
+#define JET_bitRetrieveFDB 0x40000000
+#define JET_bitRetrieveBookmarks 0x20000000
+
+ /* Retrieve column parameter structure for JetRetrieveColumns */
+
+typedef struct {
+ JET_COLUMNID columnid;
+ void *pvData;
+ unsigned long cbData;
+ unsigned long cbActual;
+ JET_GRBIT grbit;
+ unsigned long ibLongValue;
+ unsigned long itagSequence;
+ JET_COLUMNID columnidNextTagged;
+ JET_ERR err;
+} JET_RETRIEVECOLUMN;
+
+ /* Flags for JetFillFatCursor */
+
+#define JET_bitFCFillRange 0x00000001
+#define JET_bitFCRefreshRange 0x00000002
+#define JET_bitFCFillMemos 0x00000004
+
+ /* Flags for JetCommitTransaction */
+
+#define JET_bitCommitFlush 0x00000001 /* commit and flush page buffers. */
+#define JET_bitCommitLazyFlush 0x00000004 /* lazy flush log buffers. */
+#define JET_bitWaitLastLevel0Commit 0x00000010 /* wait for last level 0 commit record flushed */
+
+ /* Flags for JetRollback */
+
+#define JET_bitRollbackAll 0x00000001
+
+ /* Flags for JetSetAccess and JetGetAccess */
+
+#define JET_bitACEInheritable 0x00000001
+
+ /* Flags for JetCreateSystemDatabase */
+
+#define JET_bitSysDbOverwrite 0x00000001
+
+ /* Flags for Jet Property Management */
+#define JET_bitPropDDL 0x00000001 /* also used for setting */
+#define JET_bitPropInherited 0x00000002 /* not used for setting */
+
+ /* JPM Flags that are only used for setting properties */
+#define JET_bitPropReplaceOnly 0x00000010
+#define JET_bitPropInsertOnly 0x00000020
+#define JET_bitPropDeleteOnly 0x00000040
+
+ /* InfoLevels for Jet Property Management */
+#define JET_PropertyValue 0
+#define JET_PropertyCount 1
+#define JET_PropertySingleCollection 2
+#define JET_PropertyAllCollections 3
+
+ /* Collate values for JetGetColumnInfo and JetGetIndexInfo */
+
+#define JET_sortBinary 0x0000
+#define JET_sortEFGPI 0x0100
+#define JET_sortSNIFD 0x0101
+#define JET_sortSpanish 0x0102
+#define JET_sortDutch 0x0103
+#define JET_sortSweFin 0x0104
+#define JET_sortNorDan 0x0105
+#define JET_sortIcelandic 0x0106
+#define JET_sortCyrillic 0x0107
+#define JET_sortCzech 0x0108
+#define JET_sortHungarian 0x0109
+#define JET_sortPolish 0x010A
+#define JET_sortArabic 0x010B
+#define JET_sortHebrew 0x010C
+#define JET_sortMax 0x010C /* Max for nonDBCS sort orders */
+
+#ifdef DBCS /* johnta: Add the new Japanese sorting order */
+#define JET_sortJapanese 0x010D
+#endif /* DBCS */
+
+#define JET_sortUnknown 0xFFFF
+
+ /* Paradox ISAM specific collate values */
+
+#define JET_sortPdxIntl 0x1000
+#define JET_sortPdxSwedFin 0x1001
+#define JET_sortPdxNorDan 0x1002
+
+ /* Info parameter for JetGetDatabaseInfo */
+
+#define JET_DbInfoFilename 0
+#define JET_DbInfoConnect 1
+#define JET_DbInfoCountry 2
+#define JET_DbInfoLangid 3
+#define JET_DbInfoCp 4
+#define JET_DbInfoCollate 5
+#define JET_DbInfoOptions 6
+#define JET_DbInfoTransactions 7
+#define JET_DbInfoVersion 8
+#define JET_DbInfoIsam 9
+#define JET_DbInfoFilesize 10
+#define JET_DbInfoSpaceOwned 11
+#define JET_DbInfoSpaceAvailable 12
+
+ /* Database versions returned by JetGetDatabaseInfo */
+
+#define JET_DbVersion10 0x00010000
+#define JET_DbVersion11 0x00010001
+#define JET_DbVersion20 0x00020000
+
+
+ /* Isam specific info returned by JetGetDatabaseInfo */
+
+#define JET_IsamInvalid 0
+#define JET_IsamBuiltinRed 1
+#define JET_IsamBuiltinBlue 2
+
+#define JET_IsamInstRed 21
+#define JET_IsamInstBlue 22
+#define JET_IsamInstFox 23
+#define JET_IsamInstParadox 24
+#define JET_IsamInstDbase 25
+#define JET_IsamInstBtrieve 26
+
+#define JET_IsamBuilinMost JET_BuiltinBlue
+#define JET_IsamInstMin JET_IsamInstRed
+#define JET_IsamInstMost JET_IsamInstBtrieve
+
+ /* Link specific info for link identification */
+#define JET_bitLinkInvalid 0x00000000
+#define JET_bitLinkRemote 0x00100000
+#define JET_bitLinkBuiltinRed 0x00200000
+#define JET_bitLinkBuiltinBlue 0x00300000
+#define JET_bitLinkInstRed 0x00400000
+#define JET_bitLinkInstBlue 0x00500000
+#define JET_bitLinkInstFox 0x00600000
+#define JET_bitLinkInstParadox 0x00700000
+#define JET_bitLinkInstDbase 0x00800000
+#define JET_bitLinkInstBtrieve 0x00900000
+
+#define JET_bitFourByteBookmark 0x00000001
+#define JET_bitContiguousBookmarks 0x00000002
+
+ /* Column data types */
+
+#define JET_coltypNil 0
+#define JET_coltypBit 1 /* True or False, Never NULL */
+#define JET_coltypUnsignedByte 2 /* 1-byte integer, unsigned */
+#define JET_coltypShort 3 /* 2-byte integer, signed */
+#define JET_coltypLong 4 /* 4-byte integer, signed */
+#define JET_coltypCurrency 5 /* 8 byte integer, signed */
+#define JET_coltypIEEESingle 6 /* 4-byte IEEE single precision */
+#define JET_coltypIEEEDouble 7 /* 8-byte IEEE double precision */
+#define JET_coltypDateTime 8 /* Integral date, fractional time */
+#define JET_coltypBinary 9 /* Binary data, < 255 bytes */
+#define JET_coltypText 10 /* ANSI text, case insensitive, < 255 bytes */
+#define JET_coltypLongBinary 11 /* Binary data, long value */
+#define JET_coltypLongText 12 /* ANSI text, long value */
+#define JET_coltypDatabase 13 /* Database name parameter */
+#define JET_coltypTableid 14 /* Tableid parameter */
+#define JET_coltypOLE 15 /* OLE blob */
+#define JET_coltypGUID 15
+#define JET_coltypMax 16 /* the number of column types */
+ /* used for validity tests and */
+ /* array declarations. */
+
+ /* Info levels for JetGetObjectInfo */
+
+#define JET_ObjInfo 0U
+#define JET_ObjInfoListNoStats 1U
+#define JET_ObjInfoList 2U
+#define JET_ObjInfoSysTabCursor 3U
+#define JET_ObjInfoListACM 4U /* Blocked by JetGetObjectInfo */
+#define JET_ObjInfoNoStats 5U
+#define JET_ObjInfoSysTabReadOnly 6U
+#define JET_ObjInfoRulesLoaded 7U
+#define JET_ObjInfoMax 8U
+
+ /* Info levels for JetGetTableInfo */
+
+#define JET_TblInfo 0U
+#define JET_TblInfoName 1U
+#define JET_TblInfoDbid 2U
+#define JET_TblInfoMostMany 3U
+#define JET_TblInfoRvt 4U
+#define JET_TblInfoOLC 5U
+#define JET_TblInfoResetOLC 6U
+#define JET_TblInfoSpaceUsage 7U
+#define JET_TblInfoDumpTable 8U
+#define JET_TblInfoSpaceAlloc 9U
+#define JET_TblInfoSpaceOwned 10U // OwnExt
+#define JET_TblInfoSpaceAvailable 11U // AvailExt
+
+ /* Info levels for JetGetIndexInfo and JetGetTableIndexInfo */
+
+#define JET_IdxInfo 0U
+#define JET_IdxInfoList 1U
+#define JET_IdxInfoSysTabCursor 2U
+#define JET_IdxInfoOLC 3U
+#define JET_IdxInfoResetOLC 4U
+#define JET_IdxInfoSpaceAlloc 5U
+#define JET_IdxInfoLangid 6U
+#define JET_IdxInfoCount 7U
+
+ /* Info levels for JetGetReferenceInfo and JetGetTableReferenceInfo */
+
+#define JET_ReferenceInfo 0U
+#define JET_ReferenceInfoReferencing 1U
+#define JET_ReferenceInfoReferenced 2U
+#define JET_ReferenceInfoAll 3U
+#define JET_ReferenceInfoCursor 4U
+
+ /* Info levels for JetGetColumnInfo and JetGetTableColumnInfo */
+
+#define JET_ColInfo 0U
+#define JET_ColInfoList 1U
+ /* CONSIDER: Info level 2 is valid */
+#define JET_ColInfoSysTabCursor 3U
+#define JET_ColInfoBase 4U
+#define JET_ColInfoListCompact 5U
+
+
+ /* Attribute types for query definitions */
+
+#define JET_qoaBeginDef 0
+#define JET_qoaOperation 1
+#define JET_qoaParameter 2
+#define JET_qoaOptions 3
+#define JET_qoaDatabase 4
+#define JET_qoaInputTable 5
+#define JET_qoaOutput 6
+#define JET_qoaJoin 7
+#define JET_qoaRestriction 8
+#define JET_qoaGroup 9
+#define JET_qoaGroupRstr 10
+#define JET_qoaOrdering 11
+#define JET_qoaEndDef 255
+#define JET_qoaValidLeast JET_qoaOperation
+#define JET_qoaValidMost JET_qoaOrdering
+
+
+ /* Query object options */
+
+#define JET_bitFqoOutputAllCols 0x0001
+#define JET_bitFqoRemoveDups 0x0002
+#define JET_bitFqoOwnerAccess 0x0004
+#define JET_bitFqoDistinctRow 0x0008
+#define JET_bitFqoTop 0x0010
+#define JET_bitFqoPercent 0x0020
+#define JET_bitFqoCorresponding 0x0040 /* JET_qopSetOperation */
+
+ /* Query object join type */
+
+#define JET_fjoinInner 1
+#define JET_fjoinLeftOuter 2
+#define JET_fjoinRightOuter 3
+
+ /* Query object operations */
+
+#define JET_qopSelect 1
+#define JET_qopSelectInto 2
+#define JET_qopInsertSelection 3
+#define JET_qopUpdate 4
+#define JET_qopDelete 5
+#define JET_qopTransform 6
+#define JET_qopDDL 7
+#define JET_qopSqlPassThrough 8
+#define JET_qopSetOperation 9
+#define JET_qopSPTBulk 10
+
+#define JET_bitqopSelect 0x0000
+#define JET_bitqopTransform 0x0010
+#define JET_bitqopDelete 0x0020
+#define JET_bitqopUpdate 0x0030
+#define JET_bitqopInsertSelection 0x0040
+#define JET_bitqopSelectInto 0x0050
+#define JET_bitqopDDL 0x0060
+#define JET_bitqopSqlPassThrough 0x0070
+#define JET_bitqopSetOperation 0x0080
+#define JET_bitqopSPTBulk 0x0090
+
+ /* Engine Object Types */
+
+#define JET_objtypNil 0
+#define JET_objtypTable 1
+#define JET_objtypDb 2
+#define JET_objtypContainer 3
+#define JET_objtypSQLLink 4
+#define JET_objtypQuery 5
+#define JET_objtypLink 6
+#define JET_objtypTemplate 7
+#define JET_objtypRelationship 8
+
+ /* All types less than JET_objtypClientMin are reserved by JET */
+
+#define JET_objtypClientMin 0x8000
+
+ /* Security Constant Values */
+
+#define JET_cchUserNameMax 20
+#define JET_cchPasswordMax 14
+
+ /* Security Access Masks */
+
+#define JET_acmNoAccess 0x00000000L
+#define JET_acmFullAccess 0x000FFFFFL
+
+#define JET_acmSpecificMask 0x0000FFFFL
+#define JET_acmSpecific_1 0x00000001L
+#define JET_acmSpecific_2 0x00000002L
+#define JET_acmSpecific_3 0x00000004L
+#define JET_acmSpecific_4 0x00000008L
+#define JET_acmSpecific_5 0x00000010L
+#define JET_acmSpecific_6 0x00000020L
+#define JET_acmSpecific_7 0x00000040L
+#define JET_acmSpecific_8 0x00000080L
+#define JET_acmSpecific_9 0x00000100L
+#define JET_acmSpecific_10 0x00000200L
+#define JET_acmSpecific_11 0x00000400L
+#define JET_acmSpecific_12 0x00000800L
+#define JET_acmSpecific_13 0x00001000L
+#define JET_acmSpecific_14 0x00002000L
+#define JET_acmSpecific_15 0x00004000L
+#define JET_acmSpecific_16 0x00008000L
+
+#define JET_acmStandardMask 0x00FF0000L
+#define JET_acmDelete 0x00010000L
+#define JET_acmReadControl 0x00020000L
+#define JET_acmWriteDac 0x00040000L
+#define JET_acmWriteOwner 0x00080000L
+
+#define JET_acmTblCreate (JET_acmSpecific_1)
+#define JET_acmTblAccessRcols (JET_acmSpecific_2)
+#define JET_acmTblReadDef (JET_acmSpecific_3)
+#define JET_acmTblWriteDef (JET_acmSpecific_4)
+#define JET_acmTblRetrieveData (JET_acmSpecific_5)
+#define JET_acmTblInsertData (JET_acmSpecific_6)
+#define JET_acmTblReplaceData (JET_acmSpecific_7)
+#define JET_acmTblDeleteData (JET_acmSpecific_8)
+
+#define JET_acmDbCreate (JET_acmSpecific_1)
+#define JET_acmDbOpen (JET_acmSpecific_2)
+
+ /* Compact Options */
+
+#define JET_bitCompactDontCopyLocale 0x00000004 /* Don't copy locale from source to dest */
+#define JET_bitCompactVersion10 0x00000008 /* Destination is version 1.0 format */
+#define JET_bitCompactVersion1x 0x00000010 /* Destination is version 1.x format */
+#define JET_bitCompactStats 0x00000020 /* Dump off-line compaction stats (only when progress meter also specified) */
+
+ /* On-line Compact Options */
+
+#define JET_bitCompactOn 0x00000001 /* enable on-line compaction */
+
+ /* Repair Notification Types */
+
+#define JET_rntSelfContained 0
+#define JET_rntDeletedIndex 1
+#define JET_rntDeletedRec 2
+#define JET_rntDeletedLv 3
+#define JET_rntTruncated 4
+
+ /* Status Notification Processes */
+
+#define JET_snpIndex 0
+#define JET_snpQuery 1
+#define JET_snpRepair 2
+#define JET_snpImex 3
+#define JET_snpCompact 4
+#define JET_snpFastFind 5
+#define JET_snpODBCNotReady 6
+#define JET_snpQuerySort 7
+#define JET_snpRestore 8
+#define JET_snpBackup 9
+#define JET_snpUpgrade 10
+
+ /* Status Notification Types */
+
+#define JET_sntProgress 0 /* callback for progress */
+#define JET_sntMessage 1
+#define JET_sntBulkRecords 2 /* callback for # rec for bulk op */
+#define JET_sntFail 3 /* callback for failure during progress */
+#define JET_sntErrCount 4 /* callback for err count */
+#define JET_sntBegin 5 /* callback for beginning of operation */
+#define JET_sntComplete 6 /* callback for completion of operation */
+#define JET_sntCantRollback 7 /* callback for no rollback */
+#define JET_sntRestoreMap 8 /* callback for restore map */
+
+ /* Message codes for JET_snpCompact */
+
+#define JET_sncCopyObject 0 /* Starting to copy object */
+#define JET_sncCopyFailed 1 /* Copy of this object failed */
+#define JET_sncYield 2 /* Client can yield/check for user interrupt */
+#define JET_sncTransactionFull 3 /* Client can yield/check for user interrupt */
+#define JET_sncAboutToWrap 4 /* Find find is about to wrap */
+
+ /* Message codes for JET_snpODBCNotReady */
+
+#define JET_sncODBCNotReady 0 /* Waiting for results from ODBC */
+
+
+ /* Constants for the [ODBC] section of JET.INI */
+
+#define JET_SQLTraceCanonical 0x0001 /* Output ODBC Generic SQL */
+
+ /* Constants for the [Debug] section of JET.INI */
+
+ /* APITrace */
+
+#define JET_APITraceEnter 0x0001
+#define JET_APITraceExit 0x0002
+#define JET_APITraceExitError 0x0004
+#define JET_APIBreakOnError 0x0008
+#define JET_APITraceCount 0x0010
+#define JET_APITraceNoIdle 0x0020
+#define JET_APITraceParameters 0x0040
+
+ /* IdleTrace */
+
+#define JET_IdleTraceCursor 0x0001
+#define JET_IdleTraceBuffer 0x0002
+#define JET_IdleTraceFlush 0x0004
+
+ /* AssertAction */
+
+#define JET_AssertExit 0x0000 /* Exit the application */
+#define JET_AssertBreak 0x0001 /* Break to debugger */
+#define JET_AssertMsgBox 0x0002 /* Display message box */
+#define JET_AssertStop 0x0004 /* Alert and stop */
+
+ /* IOTrace */
+
+#define JET_IOTraceAlloc 0x0001 /* DB Page Allocation */
+#define JET_IOTraceFree 0x0002 /* DB Page Free */
+#define JET_IOTraceRead 0x0004 /* DB Page Read */
+#define JET_IOTraceWrite 0x0008 /* DB Page Write */
+#define JET_IOTraceError 0x0010 /* DB Page I/O Error */
+
+ /* MemTrace */
+
+#define JET_MemTraceAlloc 0x0001 /* Memory allocation */
+#define JET_MemTraceRealloc 0x0002 /* Memory reallocation */
+#define JET_MemTraceFree 0x0004 /* Memory free */
+
+ /* RmtTrace */
+
+#define JET_RmtTraceError 0x0001 /* Remote server error message */
+#define JET_RmtTraceSql 0x0002 /* Remote SQL Prepares & Exec's */
+#define JET_RmtTraceAPI 0x0004 /* Remote ODBC API calls */
+#define JET_RmtTraceODBC 0x0008
+#define JET_RmtSyncODBC 0x0010 /* Turn on ODBC Sync mode */
+
+/**********************************************************************/
+/*********************** ERROR CODES **************************/
+/**********************************************************************/
+
+/* SUCCESS */
+
+#define JET_errSuccess 0 /* Successful Operation */
+
+/* ERRORS */
+
+#define JET_wrnNyi -1 /* Function Not Yet Implemented */
+
+/* SYSTEM errors
+/**/
+#define JET_errRfsFailure -100 /* JET_errRfsFailure */
+#define JET_errRfsNotArmed -101 /* JET_errRfsFailure */
+#define JET_errFileClose -102 /* Could not close DOS file */
+#define JET_errOutOfThreads -103 /* Could not start thread */
+#define JET_errTooManyIO -105 /* System busy due to too many IOs */
+#define JET_errDatabase200Format -106 /* 200 format database */
+#define JET_errDatabase400Format -107 /* 400 format database */
+
+/* BUFFER MANAGER errors
+/**/
+#define wrnBFNotSynchronous 200 /* Buffer page evicted */
+#define wrnBFPageNotFound 201 /* Page not found */
+#define errBFInUse -202 /* Cannot abandon buffer */
+#define wrnBFNewIO 203 /* Buffer access caused a new IO (cache miss) */
+#define wrnBFCacheMiss 204 /* Buffer access was a cache miss but didn't cause a new IO */
+#define wrnBFNoBufAvailable 205 /* Need to allocate new buffer for read (used in Async IO ) */
+
+/* DIRECTORY MANAGER errors
+/**/
+#define errPMOutOfPageSpace -300 /* Out of page space */
+#define errPMItagTooBig -301 /* Itag too big */
+#define errPMRecDeleted -302 /* Record deleted */
+#define errPMTagsUsedUp -303 /* Tags used up */
+#define wrnBMConflict 304 /* conflict in BM Clean up */
+#define errDIRNoShortCircuit -305 /* No Short Circuit Avail */
+#define errDIRCannotSplit -306 /* Cannot horizontally split FDP */
+#define errDIRTop -307 /* Cannot go up */
+#define errDIRFDP 308 /* On an FDP Node */
+#define errDIRNotSynchronous -309 /* May have left critical section */
+#define wrnDIREmptyPage 310 /* Moved through empty page */
+#define errSPConflict -311 /* Device extent being extended */
+#define wrnNDFoundLess 312 /* Found Less */
+#define wrnNDFoundGreater 313 /* Found Greater */
+#define errNDOutSonRange -314 /* Son out of range */
+#define errNDOutItemRange -315 /* Item out of range */
+#define errNDGreaterThanAllItems -316 /* Greater than all items */
+#define errNDLastItemNode -317 /* Last node of item list */
+#define errNDFirstItemNode -318 /* First node of item list */
+#define wrnNDDuplicateItem 319 /* Duplicated Item */
+#define errNDNoItem -320 /* Item not there */
+#define JET_wrnRemainingVersions 321 /* Some versions couldn't be cleaned */
+#define JET_wrnPreviousVersion 322 /* Version already existed */
+#define JET_errPageBoundary -323 /* Reached Page Boundary */
+#define JET_errKeyBoundary -324 /* Reached Key Boundary */
+#define errDIRInPageFather -325 /* sridFather in page to free */
+#define errBMMaxKeyInPage -326 /* used by OLC to avoid cleanup of parent pages */
+#define JET_errBadPageLink -327 /* next/previous page link page does not point back to source */
+#define JET_errBadBookmark -328 /* bookmark has no corresponding address in database */
+#define wrnBMCleanNullOp 329 /* BMClean returns this on encountering a page
+ /* deleted MaxKeyInPage [but there was no conflict]
+
+/* RECORD MANAGER errors
+/**/
+#define wrnFLDKeyTooBig 400 /* Key too big (truncated it) */
+#define errFLDTooManySegments -401 /* Too many key segments */
+#define wrnFLDNullKey 402 /* Key is entirely NULL */
+#define wrnFLDOutOfKeys 403 /* No more keys to extract */
+#define wrnFLDNullSeg 404 /* Null segment in key */
+#define wrnRECLongField 405 /* Separated long value */
+#define JET_wrnSeparateLongValue 406 /* Separated long value */
+#define JET_wrnRecordFoundGreater JET_wrnSeekNotEqual
+#define JET_wrnRecordFoundLess JET_wrnSeekNotEqual
+#define JET_errColumnIllegalNull JET_errNullInvalid
+#define wrnFLDNullFirstSeg 407 /* Null first segment in key */
+#define JET_errKeyTooBig -408 /* Key with column truncation still truncated */
+
+/* LOGGING/RECOVERY errors
+/**/
+#define JET_errInvalidLoggedOperation -500 /* Logged operation cannot be redone */
+#define JET_errLogFileCorrupt -501 /* Log file is corrupt */
+#define errLGNoMoreRecords -502 /* Last log record read */
+#define JET_errNoBackupDirectory -503 /* No backup directory given */
+#define JET_errBackupDirectoryNotEmpty -504 /* The backup directory is not emtpy */
+#define JET_errBackupInProgress -505 /* Backup is active already */
+#define JET_errMissingPreviousLogFile -509 /* Missing the log file for check point */
+#define JET_errLogWriteFail -510 /* Fail when writing to log file */
+#define JET_errBadLogVersion -514 /* Version of log file is not compatible with Jet version */
+#define JET_errInvalidLogSequence -515 /* Timestamp in next log does not match expected */
+#define JET_errLoggingDisabled -516 /* Log is not active */
+#define JET_errLogBufferTooSmall -517 /* Log buffer is too small for recovery */
+#define errLGNotSynchronous -518 /* retry to LGLogRec */
+#define JET_errLogSequenceEnd -519 /* Exceed maximum log file number */
+#define JET_errNoBackup -520 /* No backup in progress */
+#define JET_errInvalidBackupSequence -521 /* Backup call out of sequence */
+#define JET_errBackupNotAllowedYet -523 /* Can not do backup now */
+#define JET_errDeleteBackupFileFail -524 /* Could not delete backup file */
+#define JET_errMakeBackupDirectoryFail -525 /* Could not make backup temp directory */
+#define JET_errInvalidBackup -526 /* Cannot incremental backup when circular logging enabled */
+#define JET_errRecoveredWithErrors -527 /* For repair, restored with errors */
+#define JET_errMissingLogFile -528 /* current log file missing */
+#define JET_errLogDiskFull -529 /* log disk full */
+#define JET_errBadLogSignature -530 /* bad signature for a log file */
+#define JET_errBadDbSignature -531 /* bad signature for a db file */
+#define JET_errBadCheckpointSignature -532 /* bad signature for a checkpoint file */
+#define JET_errCheckpointCorrupt -533 /* checkpoint file not found or corrupt */
+#define JET_errMissingPatchPage -534 /* patch file page not found during recovery */
+
+
+#define JET_errDatabaseInconsistent -550 /* database is in inconsistent state */
+#define JET_errConsistentTimeMismatch -551 /* database last consistent time unmatched */
+#define JET_errDatabasePatchFileMismatch -552 /* patch file is not generated from this backup */
+#define JET_errEndingRestoreLogTooLow -553 /* the starting log number too low for the restore */
+#define JET_errStartingRestoreLogTooHigh -554 /* the starting log number too high for the restore */
+#define JET_errGivenLogFileHasBadSignature -555 /* Restore log file has bad signature */
+#define JET_errGivenLogFileIsNotContiguous -556 /* Restore log file is not contiguous */
+#define JET_errMissingRestoreLogFiles -557 /* Some restore log files are missing */
+#define JET_wrnExistingLogFileHasBadSignature 558 /* Existing log file has bad signature */
+#define JET_wrnExistingLogFileIsNotContiguous 559 /* Existing log file is not contiguous */
+#define JET_errMissingFullBackup -560 /* The database miss a previous full backup befor incremental backup */
+#define JET_errBadBackupDatabaseSize -561 /* The backup database size is not in 4k */
+#define JET_errDatabaseAlreadyUpgraded -562 /* Attempted to upgrade a database that is already current */
+
+#define JET_errTermInProgress -1000 /* Termination in progress */
+#define JET_errFeatureNotAvailable -1001 /* API not supported */
+#define JET_errInvalidName -1002 /* Invalid name */
+#define JET_errInvalidParameter -1003 /* Invalid API parameter */
+#define JET_wrnColumnNull 1004 /* Column is NULL-valued */
+#define JET_wrnBufferTruncated 1006 /* Buffer too small for data */
+#define JET_wrnDatabaseAttached 1007 /* Database is already attached */
+#define JET_wrnSortOverflow 1009 /* Sort does not fit in memory */
+#define JET_errInvalidDatabaseId -1010 /* Invalid database id */
+#define JET_errOutOfMemory -1011 /* Out of Memory */
+#define JET_errOutOfDatabaseSpace -1012 /* Maximum database size reached */
+#define JET_errOutOfCursors -1013 /* Out of table cursors */
+#define JET_errOutOfBuffers -1014 /* Out of database page buffers */
+#define JET_errTooManyIndexes -1015 /* Too many indexes */
+#define JET_errTooManyKeys -1016 /* Too many columns in an index */
+#define JET_errRecordDeleted -1017 /* Record has been deleted */
+#define JET_errReadVerifyFailure -1018 /* Read verification error */
+#define JET_errOutOfFileHandles -1020 /* Out of file handles */
+#define JET_errDiskIO -1022 /* Disk IO error */
+#define JET_errInvalidPath -1023 /* Invalid file path */
+#define JET_errRecordTooBig -1026 /* Record larger than maximum size */
+#define JET_errTooManyOpenDatabases -1027 /* Too many open databases */
+#define JET_errInvalidDatabase -1028 /* Not a database file */
+#define JET_errNotInitialized -1029 /* JetInit not yet called */
+#define JET_errAlreadyInitialized -1030 /* JetInit already called */
+#define JET_errFileAccessDenied -1032 /* Cannot access file */
+#define JET_errQueryNotSupported -1034 /* Query support unavailable */
+#define JET_errSQLLinkNotSupported -1035 /* SQL Link support unavailable */
+#define JET_errBufferTooSmall -1038 /* Buffer is too small */
+#define JET_wrnSeekNotEqual 1039 /* SeekLE or SeekGE didn't find exact match */
+#define JET_errTooManyColumns -1040 /* Too many columns defined */
+#define JET_errContainerNotEmpty -1043 /* Container is not empty */
+#define JET_errInvalidFilename -1044 /* Filename is invalid */
+#define JET_errInvalidBookmark -1045 /* Invalid bookmark */
+#define JET_errColumnInUse -1046 /* Column used in an index */
+#define JET_errInvalidBufferSize -1047 /* Data buffer doesn't match column size */
+#define JET_errColumnNotUpdatable -1048 /* Cannot set column value */
+#define JET_errIndexInUse -1051 /* Index is in use */
+#define JET_errLinkNotSupported -1052 /* Link support unavailable */
+#define JET_errNullKeyDisallowed -1053 /* Null keys are disallowed on index */
+#define JET_errNotInTransaction -1054 /* Operation must be within a transaction */
+#define JET_wrnNoErrorInfo 1055 /* No extended error information */
+#define JET_wrnNoIdleActivity 1058 /* No idle activity occured */
+#define JET_errTooManyActiveUsers -1059 /* Too many active database users */
+#define JET_errInvalidAppend -1060 /* Cannot append long value */
+#define JET_errInvalidCountry -1061 /* Invalid or unknown country code */
+#define JET_errInvalidLanguageId -1062 /* Invalid or unknown language id */
+#define JET_errInvalidCodePage -1063 /* Invalid or unknown code page */
+#define JET_wrnNoWriteLock 1067 /* No write lock at transaction level 0 */
+#define JET_wrnColumnSetNull 1068 /* Column set to NULL-value */
+#define JET_errVersionStoreOutOfMemory -1069 /* lMaxVerPages exceeded (XJET only) */
+#define JET_errCurrencyStackOutOfMemory -1070 /* lCSRPerfFUCB * lMaxCursors exceeded (XJET only) */
+#define JET_errOutOfSessions -1101 /* Out of sessions */
+#define JET_errWriteConflict -1102 /* Write lock failed due to outstanding write lock */
+#define JET_errTransTooDeep -1103 /* Xactions nested too deeply */
+#define JET_errInvalidSesid -1104 /* Invalid session handle */
+#define JET_errSessionWriteConflict -1107 /* Another session has private version of page */
+#define JET_errInTransaction -1108 /* Operation not allowed within a transaction */
+#define JET_errDatabaseDuplicate -1201 /* Database already exists */
+#define JET_errDatabaseInUse -1202 /* Database in use */
+#define JET_errDatabaseNotFound -1203 /* No such database */
+#define JET_errDatabaseInvalidName -1204 /* Invalid database name */
+#define JET_errDatabaseInvalidPages -1205 /* Invalid number of pages */
+#define JET_errDatabaseCorrupted -1206 /* non-db file or corrupted db */
+#define JET_errDatabaseLocked -1207 /* Database exclusively locked */
+#define JET_errCannotDisableVersioning -1208 /* Cannot disable versioning for this database */
+#define JET_wrnTableEmpty 1301 /* Open an empty table */
+#define JET_errTableLocked -1302 /* Table is exclusively locked */
+#define JET_errTableDuplicate -1303 /* Table already exists */
+#define JET_errTableInUse -1304 /* Table is in use, cannot lock */
+#define JET_errObjectNotFound -1305 /* No such table or object */
+#define JET_errDensityInvalid -1307 /* Bad file/index density */
+#define JET_errTableNotEmpty -1308 /* Cannot define clustered index */
+#define JET_errInvalidTableId -1310 /* Invalid table id */
+#define JET_errTooManyOpenTables -1311 /* Cannot open any more tables */
+#define JET_errIllegalOperation -1312 /* Oper. not supported on table */
+#define JET_errObjectDuplicate -1314 /* Table or object name in use */
+#define JET_errInvalidObject -1316 /* object is invalid for operation */
+#define JET_errIndexCantBuild -1401 /* Cannot build clustered index */
+#define JET_errIndexHasPrimary -1402 /* Primary index already defined */
+#define JET_errIndexDuplicate -1403 /* Index is already defined */
+#define JET_errIndexNotFound -1404 /* No such index */
+#define JET_errIndexMustStay -1405 /* Cannot delete clustered index */
+#define JET_errIndexInvalidDef -1406 /* Illegal index definition */
+#define JET_errIndexHasClustered -1408 /* Clustered index already defined */
+#define JET_errInvalidCreateIndex -1409 /* Invali create index description */
+#define JET_errTooManyOpenIndexes -1410 /* Out of index description blocks */
+#define JET_errColumnLong -1501 /* Column value is long */
+#define JET_errColumnNoChunk -1502 /* no such chunk in long value */
+#define JET_errColumnDoesNotFit -1503 /* Field will not fit in record */
+#define JET_errNullInvalid -1504 /* Null not valid */
+#define JET_errColumnIndexed -1505 /* Column indexed, cannot delete */
+#define JET_errColumnTooBig -1506 /* Field length is > maximum */
+#define JET_errColumnNotFound -1507 /* No such column */
+#define JET_errColumnDuplicate -1508 /* Field is already defined */
+#define JET_errColumn2ndSysMaint -1510 /* Second autoinc or version column */
+#define JET_errInvalidColumnType -1511 /* Invalid column data type */
+#define JET_wrnColumnMaxTruncated 1512 /* Max length too big, truncated */
+#define JET_errColumnCannotIndex -1513 /* Cannot index Bit,LongText,LongBinary */
+#define JET_errTaggedNotNULL -1514 /* No non-NULL tagged columns */
+#define JET_errNoCurrentIndex -1515 /* Invalid w/o a current index */
+#define JET_errKeyIsMade -1516 /* The key is completely made */
+#define JET_errBadColumnId -1517 /* Column Id Incorrect */
+#define JET_errBadItagSequence -1518 /* Bad itagSequence for tagged column */
+#define JET_errColumnInRelationship -1519 /* Cannot delete, column participates in relationship */
+#define JET_wrnCopyLongValue 1520 /* Single instance column bursted */
+#define JET_errCannotBeTagged -1521 /* AutoIncrement and Version cannot be tagged */
+#define JET_errRecordNotFound -1601 /* The key was not found */
+#define JET_errRecordNoCopy -1602 /* No working buffer */
+#define JET_errNoCurrentRecord -1603 /* Currency not on a record */
+#define JET_errRecordClusteredChanged -1604 /* Clustered key may not change */
+#define JET_errKeyDuplicate -1605 /* Illegal duplicate key */
+#define JET_errAlreadyPrepared -1607 /* Already copy/clear current */
+#define JET_errKeyNotMade -1608 /* No call to JetMakeKey */
+#define JET_errUpdateNotPrepared -1609 /* No call to JetPrepareUpdate */
+#define JET_wrnDataHasChanged 1610 /* Data has changed */
+#define JET_errDataHasChanged -1611 /* Data has changed, operation aborted */
+#define JET_wrnKeyChanged 1618 /* Moved to new key */
+#define JET_errTooManySorts -1701 /* Too many sort processes */
+#define JET_errInvalidOnSort -1702 /* Invalid operation on Sort */
+#define JET_errTempFileOpenError -1803 /* Temp file could not be opened */
+#define JET_errTooManyAttachedDatabases -1805 /* Too many open databases */
+#define JET_errDiskFull -1808 /* No space left on disk */
+#define JET_errPermissionDenied -1809 /* Permission denied */
+#define JET_errFileNotFound -1811 /* File not found */
+#define JET_wrnFileOpenReadOnly 1813 /* Database file is read only */
+#define JET_errAfterInitialization -1850 /* Cannot Restore after init. */
+#define JET_errLogCorrupted -1852 /* Logs could not be interpreted */
+#define JET_errInvalidOperation -1906 /* invalid operation */
+#define JET_errAccessDenied -1907 /* access denied */
+#define JET_wrnIdleFull 1908 /* ilde registry full */
+
+
+/**********************************************************************/
+/*********************** PROTOTYPES **************************/
+/**********************************************************************/
+
+#if !defined(_JET_NOPROTOTYPES)
+
+JET_ERR JET_API JetInit(JET_INSTANCE *pinstance);
+
+JET_ERR JET_API JetTerm(JET_INSTANCE instance);
+
+JET_ERR JET_API JetTerm2( JET_INSTANCE instance, JET_GRBIT grbit );
+
+JET_ERR JET_API JetSetSystemParameter(JET_INSTANCE *pinstance, JET_SESID sesid, unsigned long paramid,
+ unsigned long lParam, const char *sz);
+
+JET_ERR JET_API JetGetSystemParameter(JET_INSTANCE instance, JET_SESID sesid, unsigned long paramid,
+ unsigned long *plParam, char *sz, unsigned long cbMax);
+
+#define ctAccessPage 1
+#define ctLatchConflict 2
+#define ctSplitRetry 3
+#define ctNeighborPageScanned 4
+#define ctSplits 5
+JET_ERR JET_API JetResetCounter( JET_SESID sesid, long CounterType );
+JET_ERR JET_API JetGetCounter( JET_SESID sesid, long CounterType, long *plValue );
+
+JET_ERR JET_API JetBeginSession(JET_INSTANCE instance, JET_SESID *psesid,
+ const char *szUserName, const char *szPassword);
+
+JET_ERR JET_API JetDupSession(JET_SESID sesid, JET_SESID *psesid);
+
+JET_ERR JET_API JetEndSession(JET_SESID sesid, JET_GRBIT grbit);
+
+JET_ERR JET_API JetGetVersion(JET_SESID sesid, unsigned long *pwVersion);
+
+JET_ERR JET_API JetIdle(JET_SESID sesid, JET_GRBIT grbit);
+
+JET_ERR JET_API JetCreateDatabase(JET_SESID sesid,
+ const char *szFilename, const char *szConnect,
+ JET_DBID *pdbid, JET_GRBIT grbit);
+
+JET_ERR JET_API JetAttachDatabase(JET_SESID sesid, const char *szFilename, JET_GRBIT grbit );
+
+JET_ERR JET_API JetDetachDatabase(JET_SESID sesid, const char *szFilename);
+
+JET_ERR JET_API JetCreateTable(JET_SESID sesid, JET_DBID dbid,
+ const char *szTableName, unsigned long lPages, unsigned long lDensity,
+ JET_TABLEID *ptableid);
+
+JET_ERR JET_API JetCreateTableColumnIndex( JET_SESID sesid, JET_DBID dbid,
+ JET_TABLECREATE *ptablecreate );
+
+JET_ERR JET_API JetDeleteTable(JET_SESID sesid, JET_DBID dbid,
+ const char *szTableName);
+
+JET_ERR JET_API JetGetTableColumnInfo(JET_SESID sesid, JET_TABLEID tableid,
+ const char *szColumnName, void *pvResult, unsigned long cbMax,
+ unsigned long InfoLevel);
+
+JET_ERR JET_API JetGetColumnInfo(JET_SESID sesid, JET_DBID dbid,
+ const char *szTableName, const char *szColumnName,
+ void *pvResult, unsigned long cbMax, unsigned long InfoLevel);
+
+JET_ERR JET_API JetAddColumn(JET_SESID sesid, JET_TABLEID tableid,
+ const char *szColumn, const JET_COLUMNDEF *pcolumndef,
+ const void *pvDefault, unsigned long cbDefault,
+ JET_COLUMNID *pcolumnid);
+
+JET_ERR JET_API JetDeleteColumn(JET_SESID sesid, JET_TABLEID tableid,
+ const char *szColumn);
+
+JET_ERR JET_API JetGetTableIndexInfo(JET_SESID sesid, JET_TABLEID tableid,
+ const char *szIndexName, void *pvResult, unsigned long cbResult,
+ unsigned long InfoLevel);
+
+JET_ERR JET_API JetGetTableInfo(JET_SESID sesid, JET_TABLEID tableid,
+ void *pvResult, unsigned long cbMax, unsigned long InfoLevel);
+
+JET_ERR JET_API JetGetIndexInfo(JET_SESID sesid, JET_DBID dbid,
+ const char *szTableName, const char *szIndexName,
+ void *pvResult, unsigned long cbResult, unsigned long InfoLevel);
+
+JET_ERR JET_API JetCreateIndex(JET_SESID sesid, JET_TABLEID tableid,
+ const char *szIndexName, JET_GRBIT grbit,
+ const char *szKey, unsigned long cbKey, unsigned long lDensity);
+
+JET_ERR JET_API JetDeleteIndex(JET_SESID sesid, JET_TABLEID tableid,
+ const char *szIndexName);
+
+JET_ERR JET_API JetGetObjectInfo(JET_SESID sesid, JET_DBID dbid,
+ JET_OBJTYP objtyp, const char *szContainerName,
+ const char *szObjectName, void *pvResult, unsigned long cbMax,
+ unsigned long InfoLevel);
+
+JET_ERR JET_API JetBeginTransaction(JET_SESID sesid);
+
+JET_ERR JET_API JetCommitTransaction(JET_SESID sesid, JET_GRBIT grbit);
+
+JET_ERR JET_API JetRollback(JET_SESID sesid, JET_GRBIT grbit);
+
+JET_ERR JET_API JetGetDatabaseInfo(JET_SESID sesid, JET_DBID dbid,
+ void *pvResult, unsigned long cbMax, unsigned long InfoLevel);
+
+JET_ERR JET_API JetCloseDatabase(JET_SESID sesid, JET_DBID dbid,
+ JET_GRBIT grbit);
+
+JET_ERR JET_API JetCloseTable(JET_SESID sesid, JET_TABLEID tableid);
+
+JET_ERR JET_API JetOpenDatabase(JET_SESID sesid, const char *szFilename,
+ const char *szConnect, JET_DBID *pdbid, JET_GRBIT grbit);
+
+JET_ERR JET_API JetOpenTable(JET_SESID sesid, JET_DBID dbid,
+ const char *szTableName, const void *pvParameters,
+ unsigned long cbParameters, JET_GRBIT grbit, JET_TABLEID *ptableid);
+
+JET_ERR JET_API JetDelete(JET_SESID sesid, JET_TABLEID tableid);
+
+JET_ERR JET_API JetUpdate(JET_SESID sesid, JET_TABLEID tableid,
+ void *pvBookmark, unsigned long cbBookmark,
+ unsigned long *pcbActual);
+
+JET_ERR JET_API JetRetrieveColumn(JET_SESID sesid, JET_TABLEID tableid,
+ JET_COLUMNID columnid, void *pvData, unsigned long cbData,
+ unsigned long *pcbActual, JET_GRBIT grbit, JET_RETINFO *pretinfo);
+
+JET_ERR JET_API JetRetrieveColumns( JET_SESID sesid, JET_TABLEID tableid,
+ JET_RETRIEVECOLUMN *pretrievecolumn, unsigned long cretrievecolumn );
+
+JET_ERR JET_API JetSetColumn(JET_SESID sesid, JET_TABLEID tableid,
+ JET_COLUMNID columnid, const void *pvData, unsigned long cbData,
+ JET_GRBIT grbit, JET_SETINFO *psetinfo);
+
+JET_ERR JET_API JetSetColumns(JET_SESID sesid, JET_TABLEID tableid,
+ JET_SETCOLUMN *psetcolumn, unsigned long csetcolumn );
+
+JET_ERR JET_API JetPrepareUpdate(JET_SESID sesid, JET_TABLEID tableid,
+ unsigned long prep);
+
+JET_ERR JET_API JetGetRecordPosition(JET_SESID sesid, JET_TABLEID tableid,
+ JET_RECPOS *precpos, unsigned long cbRecpos);
+
+JET_ERR JET_API JetGotoPosition(JET_SESID sesid, JET_TABLEID tableid,
+ JET_RECPOS *precpos );
+
+JET_ERR JET_API JetGetCursorInfo(JET_SESID sesid, JET_TABLEID tableid,
+ void *pvResult, unsigned long cbMax, unsigned long InfoLevel);
+
+JET_ERR JET_API JetDupCursor(JET_SESID sesid, JET_TABLEID tableid,
+ JET_TABLEID *ptableid, JET_GRBIT grbit);
+
+JET_ERR JET_API JetGetCurrentIndex(JET_SESID sesid, JET_TABLEID tableid,
+ char *szIndexName, unsigned long cchIndexName);
+
+JET_ERR JET_API JetSetCurrentIndex(JET_SESID sesid, JET_TABLEID tableid,
+ const char *szIndexName);
+
+JET_ERR JET_API JetSetCurrentIndex2(JET_SESID sesid, JET_TABLEID tableid,
+ const char *szIndexName, JET_GRBIT grbit );
+
+JET_ERR JET_API JetMove(JET_SESID sesid, JET_TABLEID tableid,
+ long cRow, JET_GRBIT grbit);
+
+JET_ERR JET_API JetMakeKey(JET_SESID sesid, JET_TABLEID tableid,
+ const void *pvData, unsigned long cbData, JET_GRBIT grbit);
+
+JET_ERR JET_API JetSeek(JET_SESID sesid, JET_TABLEID tableid,
+ JET_GRBIT grbit);
+
+JET_ERR JET_API JetGetBookmark(JET_SESID sesid, JET_TABLEID tableid,
+ void *pvBookmark, unsigned long cbMax,
+ unsigned long *pcbActual);
+
+JET_ERR JET_API JetCompact(JET_SESID sesid, const char *szDatabaseSrc,
+ const char *szDatabaseDest, JET_PFNSTATUS pfnStatus, JET_CONVERT *pconvert,
+ JET_GRBIT grbit);
+
+JET_ERR JET_API JetDBUtilities( JET_DBUTIL *pdbutil );
+
+JET_ERR JET_API JetGotoBookmark(JET_SESID sesid, JET_TABLEID tableid,
+ void *pvBookmark, unsigned long cbBookmark);
+
+JET_ERR JET_API JetComputeStats(JET_SESID sesid, JET_TABLEID tableid);
+
+typedef unsigned long JET_VSESID; /* Received from dispatcher */
+
+struct tagVDBFNDEF;
+
+typedef unsigned long JET_VDBID; /* Received from dispatcher */
+
+struct tagVTFNDEF;
+
+typedef unsigned long JET_VTID; /* Received from dispatcher */
+
+JET_ERR JET_API JetOpenTempTable(JET_SESID sesid,
+ const JET_COLUMNDEF *prgcolumndef, unsigned long ccolumn,
+ JET_GRBIT grbit, JET_TABLEID *ptableid,
+ JET_COLUMNID *prgcolumnid);
+
+JET_ERR JET_API JetOpenTempTable2( JET_SESID sesid,
+ const JET_COLUMNDEF *prgcolumndef,
+ unsigned long ccolumn,
+ unsigned long langid,
+ JET_GRBIT grbit,
+ JET_TABLEID *ptableid,
+ JET_COLUMNID *prgcolumnid );
+
+JET_ERR JET_API JetBackup( const char *szBackupPath, JET_GRBIT grbit, JET_PFNSTATUS pfnStatus );
+
+JET_ERR JET_API JetRestore(const char *sz, JET_PFNSTATUS pfn );
+JET_ERR JET_API JetRestore2(const char *sz, const char *szDest, JET_PFNSTATUS pfn );
+
+JET_ERR JET_API JetSetIndexRange(JET_SESID sesid,
+ JET_TABLEID tableidSrc, JET_GRBIT grbit);
+
+JET_ERR JET_API JetIndexRecordCount(JET_SESID sesid,
+ JET_TABLEID tableid, unsigned long *pcrec, unsigned long crecMax );
+
+JET_ERR JET_API JetRetrieveKey(JET_SESID sesid,
+ JET_TABLEID tableid, void *pvData, unsigned long cbMax,
+ unsigned long *pcbActual, JET_GRBIT grbit );
+
+JET_ERR JET_API JetBeginExternalBackup( JET_GRBIT grbit );
+
+JET_ERR JET_API JetGetAttachInfo( void *pv,
+ unsigned long cbMax,
+ unsigned long *pcbActual );
+
+JET_ERR JET_API JetOpenFile( const char *szFileName,
+ JET_HANDLE *phfFile,
+ unsigned long *pulFileSizeLow,
+ unsigned long *pulFileSizeHigh );
+
+JET_ERR JET_API JetReadFile( JET_HANDLE hfFile,
+ void *pv,
+ unsigned long cb,
+ unsigned long *pcb );
+
+JET_ERR JET_API JetCloseFile( JET_HANDLE hfFile );
+
+JET_ERR JET_API JetGetLogInfo( void *pv,
+ unsigned long cbMax,
+ unsigned long *pcbActual );
+
+JET_ERR JET_API JetTruncateLog( void );
+
+JET_ERR JET_API JetEndExternalBackup( void );
+
+JET_ERR JET_API JetExternalRestore( char *szCheckpointFilePath, char *szLogPath, JET_RSTMAP *rgstmap, long crstfilemap, char *szBackupLogPath, long genLow, long genHigh, JET_PFNSTATUS pfn );
+
+#endif /* _JET_NOPROTOTYPES */
+
+#pragma pack()
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _JET_INCLUDED */
+
+
+
+
diff --git a/private/utils/ntbackup/exchange/inc/jetbcli.h b/private/utils/ntbackup/exchange/inc/jetbcli.h
new file mode 100644
index 000000000..a5703feff
--- /dev/null
+++ b/private/utils/ntbackup/exchange/inc/jetbcli.h
@@ -0,0 +1,407 @@
+/*
+ * EDBBCLI.H
+ *
+ * Microsoft Exchange Information Store
+ * Copyright (C) 1986-1996, Microsoft Corporation
+ *
+ * Contains declarations of additional definitions and interfaces
+ * for the Exchange Online Backup Client APIs.
+ */
+
+#ifndef _EDBBCLI_
+#define _EDBBCLI_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef MIDL_PASS
+#define RPC_STRING [string]
+#else
+#define RPC_STRING
+typedef unsigned short WCHAR;
+#endif
+
+#define EDBBACK_MDB_SERVER "Exchange MDB Database"
+#define EDBBACK_DS_SERVER "Exchange DS Database"
+
+#ifndef EDBBACK_BUILD
+#define EDBBACK_API __declspec(dllimport) _stdcall
+#else
+#define EDBBACK_API
+#endif
+
+typedef DWORD ERR;
+
+typedef LONG HRESULT;
+typedef LONG C;
+typedef TCHAR BFT;
+
+//
+// Type of backup passed into HrBackupPrepare()
+//
+
+#define BACKUP_TYPE_FULL 0x01
+#define BACKUP_TYPE_LOGS_ONLY 0x02
+
+//
+// Set the current log number to this value to disable incremental or
+// differential backup.
+//
+#define BACKUP_DISABLE_INCREMENTAL 0xffffffff
+
+//
+// Backup/Restore file types
+//
+//
+// Please note that these file types are binary values, even though they are text (or wchar) typed.
+//
+// The code in the backup API's rely on the fact that values 0-256 in 8 bit ascii map to the values 0-256 in unicode.
+//
+
+//
+// If the BFT_DIRECTORY bit is set on the backup file type, it indicates that the path specified is a directory,
+// otherwise it is a file name.
+//
+
+#define BFT_DIRECTORY 0x80
+
+//
+// If the BFT_DATABASE bit is set on the backup file type, it indicates that the file goes into the database directory.
+//
+
+#define BFT_DATABASE_DIRECTORY 0x40
+
+//
+// If the BFT_LOG bit is set on the backup file type, it indicates that the file goes into the log directory.
+//
+
+#define BFT_LOG_DIRECTORY 0x20
+
+//
+// Database logs.
+//
+
+#define BFT_LOG (BFT)(TEXT('\x01') | BFT_LOG_DIRECTORY)
+#define BFT_LOG_DIR (BFT)(TEXT('\x02') | BFT_DIRECTORY)
+
+//
+// Checkpoint file.
+//
+
+#define BFT_CHECKPOINT_DIR (BFT)(TEXT('\x03') | BFT_DIRECTORY)
+
+//
+// Database types.
+//
+#define BFT_MDB_PRIVATE_DATABASE (BFT)(TEXT('\x05') | BFT_DATABASE_DIRECTORY)
+#define BFT_MDB_PUBLIC_DATABASE (BFT)(TEXT('\x06') | BFT_DATABASE_DIRECTORY)
+#define BFT_DSA_DATABASE (BFT)(TEXT('\x07') | BFT_DATABASE_DIRECTORY)
+
+//
+// JET patch files
+//
+//
+//
+
+#define BFT_PATCH_FILE (BFT)(TEXT('\x08') | BFT_LOG_DIRECTORY)
+
+//
+// Catch all for unknown file types.
+//
+
+#define BFT_UNKNOWN (BFT)(TEXT('\x0f'))
+
+#include <edbmsg.h>
+
+typedef void *HBC;
+
+typedef struct tagEDB_RSTMAPA
+{
+ RPC_STRING char *szDatabaseName;
+ RPC_STRING char *szNewDatabaseName;
+} EDB_RSTMAPA, *PEDB_RSTMAPA; /* restore map */
+
+// required for Exchange unicode support.
+// UNDONE: NYI
+#define UNICODE_RSTMAP
+
+typedef struct tagEDB_RSTMAPW {
+ RPC_STRING WCHAR *wszDatabaseName;
+ RPC_STRING WCHAR *wszNewDatabaseName;
+} EDB_RSTMAPW, *PEDB_RSTMAPW;
+
+#ifdef UNICODE
+#define EDB_RSTMAP EDB_RSTMAPW
+#define PEDB_RSTMAP PEDB_RSTMAPW
+#else
+#define EDB_RSTMAP EDB_RSTMAPA
+#define PEDB_RSTMAP PEDB_RSTMAPA
+#endif
+
+
+HRESULT
+EDBBACK_API
+HrBackupPrepareA(
+ IN char * szBackupServer,
+ IN char * szBackupAnnotation,
+ IN unsigned long grbit,
+ IN unsigned long btBackupType,
+ OUT HBC *hbcBackupContext
+ );
+
+HRESULT
+EDBBACK_API
+HrBackupPrepareW(
+ IN WCHAR * wszBackupServer,
+ IN WCHAR * wszBackupAnnotation,
+ IN unsigned long grbit,
+ IN unsigned long btBackupType,
+ OUT HBC *hbcBackupContext
+ );
+
+#ifdef UNICODE
+#define HrBackupPrepare HrBackupPrepareW
+#else
+#define HrBackupPrepare HrBackupPrepareA
+#endif
+
+
+HRESULT
+EDBBACK_API
+HrBackupGetDatabaseNamesA(
+ IN HBC pvBackupContext,
+ OUT LPSTR *ppszAttachmentInformation,
+ OUT LPDWORD pcbSize
+ );
+
+HRESULT
+EDBBACK_API
+HrBackupGetDatabaseNamesW(
+ IN HBC pvBackupContext,
+ OUT LPWSTR *ppszAttachmentInformation,
+ OUT LPDWORD pcbSize
+ );
+
+#ifdef UNICODE
+#define HrBackupGetDatabaseNames HrBackupGetDatabaseNamesW
+#else
+#define HrBackupGetDatabaseNames HrBackupGetDatabaseNamesA
+#endif
+
+HRESULT
+EDBBACK_API
+HrBackupOpenFileW(
+ IN HBC pvBackupContext,
+ IN WCHAR * wszAttachmentName,
+ IN DWORD cbReadHintSize,
+ OUT LARGE_INTEGER *pliFileSize
+ );
+
+HRESULT
+EDBBACK_API
+HrBackupOpenFileA(
+ IN HBC pvBackupContext,
+ IN char * szAttachmentName,
+ IN DWORD cbReadHintSize,
+ OUT LARGE_INTEGER *pliFileSize
+ );
+
+#ifdef UNICODE
+#define HrBackupOpenFile HrBackupOpenFileW
+#else
+#define HrBackupOpenFile HrBackupOpenFileA
+#endif
+
+
+HRESULT
+EDBBACK_API
+HrBackupRead(
+ IN HBC pvBackupContext,
+ IN PVOID pvBuffer,
+ IN DWORD cbBuffer,
+ OUT PDWORD pcbRead
+ );
+
+HRESULT
+EDBBACK_API
+HrBackupClose(
+ IN HBC pvBackupContext
+ );
+
+HRESULT
+EDBBACK_API
+HrBackupGetBackupLogsA(
+ IN HBC pvBackupContext,
+ IN LPSTR *szBackupLogFile,
+ IN PDWORD pcbSize
+ );
+
+HRESULT
+EDBBACK_API
+HrBackupGetBackupLogsW(
+ IN HBC pvBackupContext,
+ IN LPWSTR *szBackupLogFile,
+ IN PDWORD pcbSize
+ );
+
+#ifdef UNICODE
+#define HrBackupGetBackupLogs HrBackupGetBackupLogsW
+#else
+#define HrBackupGetBackupLogs HrBackupGetBackupLogsA
+#endif
+
+HRESULT
+EDBBACK_API
+HrBackupTruncateLogs(
+ IN HBC pvBackupContext
+ );
+
+
+HRESULT
+EDBBACK_API
+HrBackupEnd(
+ IN HBC pvBackupContext
+ );
+
+
+VOID
+EDBBACK_API
+BackupFree(
+ IN PVOID pvBuffer
+ );
+
+
+HRESULT
+EDBBACK_API
+HrRestoreGetDatabaseLocationsA(
+ IN HBC hbcBackupContext,
+ OUT LPSTR *ppszDatabaseLocationList,
+ OUT LPDWORD pcbSize
+ );
+
+HRESULT
+EDBBACK_API
+HrRestoreGetDatabaseLocationsW(
+ IN HBC pvBackupContext,
+ OUT LPWSTR *ppszDatabaseLocationList,
+ OUT LPDWORD pcbSize
+ );
+
+#ifdef UNICODE
+#define HrRestoreGetDatabaseLocations HrRestoreGetDatabaseLocationsW
+#else
+#define HrRestoreGetDatabaseLocations HrRestoreGetDatabaseLocationsA
+#endif
+
+HRESULT
+EDBBACK_API
+HrRestorePrepareA(
+ char * szServerName,
+ char * szServiceAnnotation,
+ HBC *phbcBackupContext
+ );
+
+HRESULT
+EDBBACK_API
+HrRestorePrepareW(
+ WCHAR * szServerName,
+ WCHAR * szServiceAnnotation,
+ HBC *phbcBackupContext
+ );
+
+#ifdef UNICODE
+#define HrRestorePrepare HrRestorePrepareW
+#else
+#define HrRestorePrepare HrRestorePrepareA
+#endif
+
+//
+// HrRestoreRegister will register a restore
+// operation. It will interlock all subsequent
+// restore operations, and will prevent the restore target
+// from starting until the call to HrRestoreRegisterComplete.
+//
+
+HRESULT
+EDBBACK_API
+HrRestoreRegisterA(
+ IN HBC hbcRestoreContext,
+ IN char * szCheckpointFilePath,
+ IN char * szLogPath,
+ IN EDB_RSTMAPA rgrstmap[],
+ IN C crstmap,
+ IN char * szBackupLogPath,
+ IN ULONG genLow,
+ IN ULONG genHigh
+ );
+
+HRESULT
+EDBBACK_API
+HrRestoreRegisterW(
+ IN HBC hbcRestoreContext,
+ IN WCHAR * wszCheckpointFilePath,
+ IN WCHAR * wszLogPath,
+ IN EDB_RSTMAPW rgrstmap[],
+ IN C crstmap,
+ IN WCHAR * wszBackupLogPath,
+ IN ULONG genLow,
+ IN ULONG genHigh
+ );
+
+#ifdef UNICODE
+#define HrRestoreRegister HrRestoreRegisterW
+#else
+#define HrRestoreRegister HrRestoreRegisterA
+#endif
+
+//
+// HrRestoreRegisterComplete will complete a restore
+// operation. It will allow further subsequent
+// restore operations, and will allow the restore target
+// to start if hrRestoreState is success.
+//
+// If hrRestoreState is NOT hrNone, this will
+// prevent the restore target from restarting.
+//
+
+HRESULT
+EDBBACK_API
+HrRestoreRegisterComplete(
+ HBC hbcRestoreContext,
+ HRESULT hrRestoreState
+ );
+
+HRESULT
+EDBBACK_API
+HrRestoreEnd(
+ HBC hbcRestoreContext
+ );
+
+HRESULT
+EDBBACK_API
+HrSetCurrentBackupLogW(
+ WCHAR *wszServerName,
+ WCHAR * wszBackupAnnotation,
+ DWORD dwCurrentLog
+ );
+
+HRESULT
+EDBBACK_API
+HrSetCurrentBackupLogA(
+ CHAR * szServerName,
+ CHAR * szBackupAnnotation,
+ DWORD dwCurrentLog
+ );
+
+#ifdef UNICODE
+#define HrSetCurrentBackupLog HrSetCurrentBackupLogW
+#else
+#define HrSetCurrentBackupLog HrSetCurrentBackupLogA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _EDBBCLI_
+
diff --git a/private/utils/ntbackup/exchange/inc/morpc.h b/private/utils/ntbackup/exchange/inc/morpc.h
new file mode 100644
index 000000000..50e9ea91f
--- /dev/null
+++ b/private/utils/ntbackup/exchange/inc/morpc.h
@@ -0,0 +1,352 @@
+#ifndef __MORPC_H__
+#define __MORPC_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define small char
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+
+
+extern RPC_IF_HANDLE TriggerMonitoringRPC_ServerIfHandle;
+
+extern RPC_IF_HANDLE TriggerMonitoringRPC_ClientIfHandle;
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef _ERROR_STATUS_T_DEFINED
+typedef unsigned long error_status_t;
+#define _ERROR_STATUS_T_DEFINED
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+#define szTriggerRPCProtocol TEXT("ncacn_np")
+#define szTriggerRPCEndpoint TEXT("\\pipe\\Trigger")
+#define szTriggerRPCSecurity TEXT("Security=impersonation dynamic true")
+typedef small RPC_BOOL;
+
+typedef small RPC_BYTE;
+
+typedef long RPC_INT;
+
+typedef long RPC_SC;
+
+typedef long RPC_DWORD;
+
+typedef wchar_t RPC_CHAR;
+
+typedef RPC_CHAR *RPC_SZ;
+
+typedef struct __MIDL_TriggerMonitoringRPC_0001
+ {
+ short rgwSystemTime[8];
+ }
+RPC_SYSTEMTIME;
+
+typedef struct __MIDL_TriggerMonitoringRPC_0002
+ {
+ RPC_BYTE rgbTzi[172];
+ }
+RPC_TIME_ZONE_INFORMATION;
+
+typedef struct __MIDL_TriggerMonitoringRPC_0003
+ {
+ long rgdwServiceStatus[7];
+ }
+RPC_SERVICE_STATUS;
+
+typedef struct __MIDL_TriggerMonitoringRPC_0004
+ {
+ RPC_SYSTEMTIME st;
+ RPC_TIME_ZONE_INFORMATION tzi;
+ RPC_DWORD dwReturn;
+ }
+RemoteSystemTimeInfo;
+
+typedef struct _RemoteServiceStatus
+ {
+ RPC_SC sc;
+ RPC_SZ szShortName;
+ RPC_SZ szDisplayName;
+ RPC_SZ szVersion;
+ RPC_SERVICE_STATUS ss;
+ struct _RemoteServiceStatus *prssNext;
+ }
+RemoteServiceStatus;
+
+typedef struct _BackupListNode
+ {
+ struct _BackupListNode *pnodeNext;
+ struct _BackupListNode *pnodeChildren;
+ RPC_SZ szName;
+ }
+BackupListNode;
+
+RPC_SC _cdecl ScNetworkTimingTest(
+ handle_t h,
+ long cbSend,
+ small rgbSend[],
+ long cbReceive,
+ small rgbReceive[]);
+RPC_SC _cdecl ScGetMaintenanceMode(
+ handle_t h,
+ RPC_BOOL *pfValue,
+ RPC_SYSTEMTIME *pst,
+ RPC_SZ szUser,
+ long cchMac);
+RPC_SC _cdecl ScSetMaintenanceMode(
+ handle_t h,
+ RPC_BOOL fNew,
+ RPC_SZ szUser);
+RPC_SC _cdecl ScGetRemoteSystemTime(
+ handle_t h,
+ RPC_SYSTEMTIME *pst);
+RPC_SC _cdecl ScSetRemoteSystemTime(
+ handle_t h,
+ RPC_SYSTEMTIME *pst);
+#define dwServerFlagMapiRunning 0x00000001
+RPC_SC _cdecl ScGetRemoteServerStatus(
+ handle_t h,
+ RPC_DWORD *pdwServerFlags,
+ RemoteSystemTimeInfo *prsti,
+ RemoteServiceStatus *prss);
+RPC_SC _cdecl ScRasEnumEntries(
+ handle_t h,
+ RPC_INT cb,
+ RPC_BYTE rgbRasEnumEntries[],
+ RPC_INT *pcEntries);
+RPC_SC _cdecl ScGetBackupListNode(
+ handle_t h,
+ BackupListNode **ppnode);
+RPC_SC _cdecl ScRunRID(
+ handle_t h);
+RPC_SC _cdecl ScRunDRACheck(
+ handle_t h,
+ RPC_DWORD dw);
+#define BPTAdd 1
+#define BPTRemove 2
+#define BPTUpdate 3
+RPC_SC _cdecl ScBulkCreateProxy(
+ handle_t h,
+ RPC_SZ szHeader,
+ RPC_DWORD dwOptions);
+RPC_SC _cdecl ScCreateProxy(
+ handle_t h,
+ RPC_SZ szDN);
+RPC_SC _cdecl ScIsProxyUnique(
+ handle_t h,
+ RPC_SZ szProxy,
+ RPC_BOOL *pfUnique,
+ RPC_SZ *pszOwner);
+#define scNoError 0
+#define scInvalidData 1
+#define scCannotLogData 2
+RPC_SC _cdecl ScSaveTrackingData(
+ handle_t h,
+ RPC_INT cb,
+ RPC_BYTE pb[],
+ RPC_DWORD dwFlags);
+#define tevtMessageTransferIn 0
+#define tevtReportTransferIn 2
+#define tevtMessageSubmission 4
+#define tevtMessageTransferOut 7
+#define tevtReportTransferOut 8
+#define tevtMessageDelivery 9
+#define tevtReportDelivery 10
+#define tevtStartAssocByMTSUser 18
+#define tevtReleaseAssocByMTSUser 23
+#define tevtDLExpansion 26
+#define tevtRedirection 28
+#define tevtRerouting 29
+#define tevtDowngrading 31
+#define tevtReportAbsorption 33
+#define tevtReportGenerated 34
+#define tevtUnroutableReportDiscard 43
+#define tevtMessageLocalDelivery 1000
+typedef struct __MIDL_TriggerMonitoringRPC_0005
+ {
+ RPC_INT nEventType;
+ RPC_SYSTEMTIME stEvent;
+ RPC_SZ szGatewayName;
+ RPC_SZ szPartner;
+ RPC_SZ szMTSID;
+ RPC_SZ szRemoteID;
+ RPC_SZ szOriginator;
+ RPC_INT nPriority;
+ RPC_INT nLength;
+ RPC_INT nSeconds;
+ RPC_INT nCost;
+ }
+RPC_GATEWAY_TRACK_INFORMATION;
+
+RPC_SC _cdecl ScSaveGatewayTrackingData(
+ handle_t h,
+ RPC_GATEWAY_TRACK_INFORMATION *pgti,
+ RPC_INT cszRecipients,
+ RPC_SZ rgszRecipients[]);
+
+#if !defined(IMPORT_USED_MULTIPLE) && !defined(IMPORT_USED_SINGLE)
+
+/* routine that gets node for struct __MIDL_TriggerMonitoringRPC_0001 */
+void _gns___MIDL_TriggerMonitoringRPC_0001 (RPC_SYSTEMTIME *, PRPC_MESSAGE);
+
+/* routine that gets node for struct __MIDL_TriggerMonitoringRPC_0002 */
+void _gns___MIDL_TriggerMonitoringRPC_0002 (RPC_TIME_ZONE_INFORMATION *, PRPC_MESSAGE);
+
+/* routine that gets node for struct __MIDL_TriggerMonitoringRPC_0003 */
+void _gns___MIDL_TriggerMonitoringRPC_0003 (RPC_SERVICE_STATUS *, PRPC_MESSAGE);
+
+/* routine that gets node for struct __MIDL_TriggerMonitoringRPC_0004 */
+void _gns___MIDL_TriggerMonitoringRPC_0004 (RemoteSystemTimeInfo *, PRPC_MESSAGE);
+
+/* routine that sizes graph for struct _RemoteServiceStatus */
+void _sgs__RemoteServiceStatus (RemoteServiceStatus *, PRPC_MESSAGE);
+
+/* routine that puts graph for struct _RemoteServiceStatus */
+void _pgs__RemoteServiceStatus (RemoteServiceStatus *, PRPC_MESSAGE);
+
+/* routine that gets node for struct _RemoteServiceStatus */
+void _gns__RemoteServiceStatus (RemoteServiceStatus *, PRPC_MESSAGE);
+
+/* routine that gets graph for struct _RemoteServiceStatus */
+void _ggs__RemoteServiceStatus (RemoteServiceStatus *, unsigned char **, PRPC_MESSAGE);
+
+/* routine that allocates graph for struct _RemoteServiceStatus */
+void _ags__RemoteServiceStatus(unsigned char **, PRPC_MESSAGE);
+
+/* routine that frees graph for struct _RemoteServiceStatus */
+void _fgs__RemoteServiceStatus (RemoteServiceStatus *);
+
+/* routine that sizes graph for struct _BackupListNode */
+void _sgs__BackupListNode (BackupListNode *, PRPC_MESSAGE);
+
+/* routine that puts graph for struct _BackupListNode */
+void _pgs__BackupListNode (BackupListNode *, PRPC_MESSAGE);
+
+/* routine that gets graph for struct _BackupListNode */
+void _ggs__BackupListNode (BackupListNode *, unsigned char **, PRPC_MESSAGE);
+
+/* routine that allocates graph for struct _BackupListNode */
+void _ags__BackupListNode(unsigned char **, PRPC_MESSAGE);
+
+/* routine that frees graph for struct _BackupListNode */
+void _fgs__BackupListNode (BackupListNode *);
+
+/* routine that sizes graph for struct __MIDL_TriggerMonitoringRPC_0005 */
+void _sgs___MIDL_TriggerMonitoringRPC_0005 (RPC_GATEWAY_TRACK_INFORMATION *, PRPC_MESSAGE);
+
+/* routine that puts graph for struct __MIDL_TriggerMonitoringRPC_0005 */
+void _pgs___MIDL_TriggerMonitoringRPC_0005 (RPC_GATEWAY_TRACK_INFORMATION *, PRPC_MESSAGE);
+
+/* routine that gets node for struct __MIDL_TriggerMonitoringRPC_0005 */
+void _gns___MIDL_TriggerMonitoringRPC_0005 (RPC_GATEWAY_TRACK_INFORMATION *, PRPC_MESSAGE);
+
+/* routine that gets graph for struct __MIDL_TriggerMonitoringRPC_0005 */
+void _ggs___MIDL_TriggerMonitoringRPC_0005 (RPC_GATEWAY_TRACK_INFORMATION *, unsigned char **, PRPC_MESSAGE);
+
+/* routine that allocates graph for struct __MIDL_TriggerMonitoringRPC_0005 */
+void _ags___MIDL_TriggerMonitoringRPC_0005(unsigned char **, PRPC_MESSAGE);
+
+/* routine that frees graph for struct __MIDL_TriggerMonitoringRPC_0005 */
+void _fgs___MIDL_TriggerMonitoringRPC_0005 (RPC_GATEWAY_TRACK_INFORMATION *);
+
+#endif /*!defined(IMPORT_USED_MULTIPLE) && !defined(IMPORT_USED_SINGLE)*/
+
+typedef struct _TriggerMonitoringRPC_SERVER_EPV
+ {
+ RPC_SC (_cdecl __RPC_FAR * ScNetworkTimingTest)(
+ handle_t h,
+ long cbSend,
+ small *rgbSend,
+ long cbReceive,
+ small *rgbReceive);
+ RPC_SC (_cdecl __RPC_FAR * ScGetMaintenanceMode)(
+ handle_t h,
+ RPC_BOOL *pfValue,
+ RPC_SYSTEMTIME *pst,
+ RPC_SZ szUser,
+ long cchMac);
+ RPC_SC (_cdecl __RPC_FAR * ScSetMaintenanceMode)(
+ handle_t h,
+ RPC_BOOL fNew,
+ RPC_SZ szUser);
+ RPC_SC (_cdecl __RPC_FAR * ScGetRemoteSystemTime)(
+ handle_t h,
+ RPC_SYSTEMTIME *pst);
+ RPC_SC (_cdecl __RPC_FAR * ScSetRemoteSystemTime)(
+ handle_t h,
+ RPC_SYSTEMTIME *pst);
+ RPC_SC (_cdecl __RPC_FAR * ScGetRemoteServerStatus)(
+ handle_t h,
+ RPC_DWORD *pdwServerFlags,
+ RemoteSystemTimeInfo *prsti,
+ RemoteServiceStatus *prss);
+ RPC_SC (_cdecl __RPC_FAR * ScRasEnumEntries)(
+ handle_t h,
+ RPC_INT cb,
+ RPC_BYTE *rgbRasEnumEntries,
+ RPC_INT *pcEntries);
+ RPC_SC (_cdecl __RPC_FAR * ScGetBackupListNode)(
+ handle_t h,
+ BackupListNode **ppnode);
+ RPC_SC (_cdecl __RPC_FAR * ScRunRID)(
+ handle_t h);
+ RPC_SC (_cdecl __RPC_FAR * ScRunDRACheck)(
+ handle_t h,
+ RPC_DWORD dw);
+ RPC_SC (_cdecl __RPC_FAR * ScBulkCreateProxy)(
+ handle_t h,
+ RPC_SZ szHeader,
+ RPC_DWORD dwOptions);
+ RPC_SC (_cdecl __RPC_FAR * ScCreateProxy)(
+ handle_t h,
+ RPC_SZ szDN);
+ RPC_SC (_cdecl __RPC_FAR * ScIsProxyUnique)(
+ handle_t h,
+ RPC_SZ szProxy,
+ RPC_BOOL *pfUnique,
+ RPC_SZ *pszOwner);
+ RPC_SC (_cdecl __RPC_FAR * ScSaveTrackingData)(
+ handle_t h,
+ RPC_INT cb,
+ RPC_BYTE *pb,
+ RPC_DWORD dwFlags);
+ RPC_SC (_cdecl __RPC_FAR * ScSaveGatewayTrackingData)(
+ handle_t h,
+ RPC_GATEWAY_TRACK_INFORMATION *pgti,
+ RPC_INT cszRecipients,
+ RPC_SZ *rgszRecipients);
+ }
+TriggerMonitoringRPC_SERVER_EPV;
+void __RPC_FAR * __RPC_API MIDL_user_allocate(size_t);
+void __RPC_API MIDL_user_free(void __RPC_FAR *);
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/private/utils/ntbackup/exchange/inc/rpcbak.h b/private/utils/ntbackup/exchange/inc/rpcbak.h
new file mode 100644
index 000000000..b33cb8cdc
--- /dev/null
+++ b/private/utils/ntbackup/exchange/inc/rpcbak.h
@@ -0,0 +1,225 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 2.00.0104 */
+/* at Mon Jan 29 16:52:29 1996
+ */
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __rpcbak_h__
+#define __rpcbak_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifndef __TriggerBackupRPC_INTERFACE_DEFINED__
+#define __TriggerBackupRPC_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: TriggerBackupRPC
+ * at Mon Jan 29 16:52:29 1996
+ * using MIDL 2.00.0104
+ ****************************************/
+/* [auto_handle][unique][version][uuid] */
+
+
+#ifndef RPC_COMMON_IDL
+#define RPC_COMMON_IDL
+#define szTriggerRPCProtocol TEXT("ncacn_np")
+#define szTriggerRPCSecurity TEXT("Security=impersonation dynamic true")
+ /* size is 4 */
+typedef long RPC_BOOL;
+
+ /* size is 1 */
+typedef small RPC_BYTE;
+
+ /* size is 4 */
+typedef long RPC_INT;
+
+ /* size is 4 */
+typedef long RPC_SC;
+
+ /* size is 4 */
+typedef long RPC_EC;
+
+ /* size is 4 */
+typedef long RPC_DWORD;
+
+ /* size is 2 */
+typedef wchar_t RPC_CHAR;
+
+ /* size is 4 */
+typedef /* [string] */ RPC_CHAR __RPC_FAR *RPC_SZ;
+
+ /* size is 16 */
+typedef struct __MIDL_TriggerBackupRPC_0001
+ {
+ short rgwSystemTime[ 8 ];
+ } RPC_SYSTEMTIME;
+
+ /* size is 172 */
+typedef struct __MIDL_TriggerBackupRPC_0002
+ {
+ RPC_BYTE rgbTzi[ 172 ];
+ } RPC_TIME_ZONE_INFORMATION;
+
+ /* size is 28 */
+typedef struct __MIDL_TriggerBackupRPC_0003
+ {
+ long rgdwServiceStatus[ 7 ];
+ } RPC_SERVICE_STATUS;
+
+#define ecOK 0 // no error
+#define ecGeneralFailure 50001 // a failure occurred that caused proxy generation to stop
+#define ecSomeProxiesFailed 50002 // some proxies failed to get generated
+#define ecTargetNotValid 50003 // supplied target address not valid
+#define ecTargetNotUnique 50004 // supplied target address not unique
+#define ecProxyDLLNotImplemented 50005 // not implemented yet
+#define ecProxyDLLOOM 50006 // memory allocation error
+#define ecProxyDLLError 50007 // general error
+#define ecProxyDLLProtocol 50008 // protocol error
+#define ecProxyDLLSyntax 50009 // syntax error
+#define ecProxyDLLEOF 50010 // end of file
+#define ecProxyDLLSoftware 50011 // error in software
+#define ecProxyDLLConfig 50012 // configuration error
+#define ecProxyDLLContention 50013 // contention error
+#define ecProxyDLLNotFound 50014 // not found
+#define ecProxyDLLDiskSpace 50015 // out of disk space
+#define ecProxyDLLException 50016 // exception thrown
+#define ecProxyDLLDefault 50017 // unknown error
+#define ecProxyNotValid 50018 // supplied proxy not valid
+#define ecProxyNotUnique 50019 // supplied proxy not unique or unable to generate a unique proxy
+#define ecProxyDuplicate 50020 // a primary proxy of the same type was also supplied
+ /* size is 16 */
+typedef struct _PROXYNODE
+ {
+ struct _PROXYNODE __RPC_FAR *pnodeNext;
+ RPC_SZ wszProxy;
+ RPC_EC ec;
+ RPC_SZ wszDN;
+ } PROXYNODE;
+
+ /* size is 4 */
+typedef struct _PROXYNODE __RPC_FAR *PPROXYNODE;
+
+ /* size is 48 */
+typedef struct _PROXYINFO
+ {
+ RPC_BOOL fContinueOnError;
+ RPC_BOOL fIgnoreOldSecondaries;
+ RPC_SZ wszDN;
+ RPC_SZ wszNickName;
+ RPC_SZ wszCommonName;
+ RPC_SZ wszDisplayName;
+ RPC_SZ wszSurName;
+ RPC_SZ wszGivenName;
+ RPC_SZ wszInitials;
+ RPC_SZ wszTargetAddress;
+ PROXYNODE __RPC_FAR *pPNVerifyProxy;
+ PROXYNODE __RPC_FAR *pPNExcludeProxy;
+ } PROXYINFO;
+
+ /* size is 4 */
+typedef struct _PROXYINFO __RPC_FAR *PPROXYINFO;
+
+ /* size is 8 */
+typedef struct _PROXYLIST
+ {
+ PROXYNODE __RPC_FAR *__RPC_FAR *ppPNProxy;
+ PROXYNODE __RPC_FAR *__RPC_FAR *ppPNFailedProxyType;
+ } PROXYLIST;
+
+ /* size is 4 */
+typedef struct _PROXYLIST __RPC_FAR *PPROXYLIST;
+
+ /* size is 192 */
+typedef struct __MIDL_TriggerBackupRPC_0004
+ {
+ RPC_SYSTEMTIME st;
+ RPC_TIME_ZONE_INFORMATION tzi;
+ RPC_DWORD dwReturn;
+ } RemoteSystemTimeInfo;
+
+ /* size is 48 */
+typedef struct _RemoteServiceStatus
+ {
+ RPC_SC sc;
+ RPC_SZ szShortName;
+ RPC_SZ szDisplayName;
+ RPC_SZ szVersion;
+ RPC_SERVICE_STATUS ss;
+ struct _RemoteServiceStatus __RPC_FAR *prssNext;
+ } RemoteServiceStatus;
+
+#define rmsSuspendRepair 0x0001
+#define rmsSuspendNotif 0x0002
+ /* size is 24 */
+typedef struct _RemoteMaintenanceStatus
+ {
+ RPC_DWORD dwStatus;
+ RPC_SYSTEMTIME st;
+ RPC_SZ szUser;
+ } RemoteMaintenanceStatus;
+
+ /* size is 12 */
+typedef struct _BackupListNode
+ {
+ struct _BackupListNode __RPC_FAR *pnodeNext;
+ struct _BackupListNode __RPC_FAR *pnodeChildren;
+ RPC_SZ szName;
+ } BackupListNode;
+
+ /* size is 44 */
+typedef struct _DistributedLockOwner
+ {
+ RPC_CHAR rgchComputer[ 17 ];
+ RPC_DWORD dwPID;
+ RPC_DWORD dwTID;
+ } DistributedLockOwner;
+
+#define DLR_NO_WAIT 0x00000001
+#define cchMaxLockName 17
+ /* size is 84 */
+typedef struct _DistributedLockRequest
+ {
+ RPC_CHAR rgchLockName[ 17 ];
+ RPC_DWORD dwFlags;
+ DistributedLockOwner dlo;
+ } DistributedLockRequest;
+
+ /* size is 48 */
+typedef struct _DistributedLockReply
+ {
+ RPC_BOOL fGranted;
+ DistributedLockOwner dlo;
+ } DistributedLockReply;
+
+#endif // #ifndef RPC_COMMON_IDL
+ /* size is 4 */
+RPC_SC __cdecl ScGetBackupListNode(
+ /* [in] */ handle_t h,
+ /* [out][in] */ BackupListNode __RPC_FAR *__RPC_FAR *ppnode);
+
+
+
+extern RPC_IF_HANDLE TriggerBackupRPC_ClientIfHandle;
+extern RPC_IF_HANDLE TriggerBackupRPC_ServerIfHandle;
+#endif /* __TriggerBackupRPC_INTERFACE_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/private/utils/ntbackup/exchange/inc/rpcpri.h b/private/utils/ntbackup/exchange/inc/rpcpri.h
new file mode 100644
index 000000000..4d41fc290
--- /dev/null
+++ b/private/utils/ntbackup/exchange/inc/rpcpri.h
@@ -0,0 +1,288 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 2.00.0104 */
+/* at Mon Jan 29 16:52:33 1996
+ */
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __rpcpri_h__
+#define __rpcpri_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifndef __TriggerPrivateRPC_INTERFACE_DEFINED__
+#define __TriggerPrivateRPC_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: TriggerPrivateRPC
+ * at Mon Jan 29 16:52:33 1996
+ * using MIDL 2.00.0104
+ ****************************************/
+/* [auto_handle][unique][version][uuid] */
+
+
+#ifndef RPC_COMMON_IDL
+#define RPC_COMMON_IDL
+#define szTriggerRPCProtocol TEXT("ncacn_np")
+#define szTriggerRPCSecurity TEXT("Security=impersonation dynamic true")
+ /* size is 4 */
+typedef long RPC_BOOL;
+
+ /* size is 1 */
+typedef small RPC_BYTE;
+
+ /* size is 4 */
+typedef long RPC_INT;
+
+ /* size is 4 */
+typedef long RPC_SC;
+
+ /* size is 4 */
+typedef long RPC_EC;
+
+ /* size is 4 */
+typedef long RPC_DWORD;
+
+ /* size is 2 */
+typedef wchar_t RPC_CHAR;
+
+ /* size is 4 */
+typedef /* [string] */ RPC_CHAR __RPC_FAR *RPC_SZ;
+
+ /* size is 16 */
+typedef struct __MIDL_TriggerPrivateRPC_0001
+ {
+ short rgwSystemTime[ 8 ];
+ } RPC_SYSTEMTIME;
+
+ /* size is 172 */
+typedef struct __MIDL_TriggerPrivateRPC_0002
+ {
+ RPC_BYTE rgbTzi[ 172 ];
+ } RPC_TIME_ZONE_INFORMATION;
+
+ /* size is 28 */
+typedef struct __MIDL_TriggerPrivateRPC_0003
+ {
+ long rgdwServiceStatus[ 7 ];
+ } RPC_SERVICE_STATUS;
+
+#define ecOK 0 // no error
+#define ecGeneralFailure 50001 // a failure occurred that caused proxy generation to stop
+#define ecSomeProxiesFailed 50002 // some proxies failed to get generated
+#define ecTargetNotValid 50003 // supplied target address not valid
+#define ecTargetNotUnique 50004 // supplied target address not unique
+#define ecProxyDLLNotImplemented 50005 // not implemented yet
+#define ecProxyDLLOOM 50006 // memory allocation error
+#define ecProxyDLLError 50007 // general error
+#define ecProxyDLLProtocol 50008 // protocol error
+#define ecProxyDLLSyntax 50009 // syntax error
+#define ecProxyDLLEOF 50010 // end of file
+#define ecProxyDLLSoftware 50011 // error in software
+#define ecProxyDLLConfig 50012 // configuration error
+#define ecProxyDLLContention 50013 // contention error
+#define ecProxyDLLNotFound 50014 // not found
+#define ecProxyDLLDiskSpace 50015 // out of disk space
+#define ecProxyDLLException 50016 // exception thrown
+#define ecProxyDLLDefault 50017 // unknown error
+#define ecProxyNotValid 50018 // supplied proxy not valid
+#define ecProxyNotUnique 50019 // supplied proxy not unique or unable to generate a unique proxy
+#define ecProxyDuplicate 50020 // a primary proxy of the same type was also supplied
+ /* size is 16 */
+typedef struct _PROXYNODE
+ {
+ struct _PROXYNODE __RPC_FAR *pnodeNext;
+ RPC_SZ wszProxy;
+ RPC_EC ec;
+ RPC_SZ wszDN;
+ } PROXYNODE;
+
+ /* size is 4 */
+typedef struct _PROXYNODE __RPC_FAR *PPROXYNODE;
+
+ /* size is 48 */
+typedef struct _PROXYINFO
+ {
+ RPC_BOOL fContinueOnError;
+ RPC_BOOL fIgnoreOldSecondaries;
+ RPC_SZ wszDN;
+ RPC_SZ wszNickName;
+ RPC_SZ wszCommonName;
+ RPC_SZ wszDisplayName;
+ RPC_SZ wszSurName;
+ RPC_SZ wszGivenName;
+ RPC_SZ wszInitials;
+ RPC_SZ wszTargetAddress;
+ PROXYNODE __RPC_FAR *pPNVerifyProxy;
+ PROXYNODE __RPC_FAR *pPNExcludeProxy;
+ } PROXYINFO;
+
+ /* size is 4 */
+typedef struct _PROXYINFO __RPC_FAR *PPROXYINFO;
+
+ /* size is 8 */
+typedef struct _PROXYLIST
+ {
+ PROXYNODE __RPC_FAR *__RPC_FAR *ppPNProxy;
+ PROXYNODE __RPC_FAR *__RPC_FAR *ppPNFailedProxyType;
+ } PROXYLIST;
+
+ /* size is 4 */
+typedef struct _PROXYLIST __RPC_FAR *PPROXYLIST;
+
+ /* size is 192 */
+typedef struct __MIDL_TriggerPrivateRPC_0004
+ {
+ RPC_SYSTEMTIME st;
+ RPC_TIME_ZONE_INFORMATION tzi;
+ RPC_DWORD dwReturn;
+ } RemoteSystemTimeInfo;
+
+ /* size is 48 */
+typedef struct _RemoteServiceStatus
+ {
+ RPC_SC sc;
+ RPC_SZ szShortName;
+ RPC_SZ szDisplayName;
+ RPC_SZ szVersion;
+ RPC_SERVICE_STATUS ss;
+ struct _RemoteServiceStatus __RPC_FAR *prssNext;
+ } RemoteServiceStatus;
+
+#define rmsSuspendRepair 0x0001
+#define rmsSuspendNotif 0x0002
+ /* size is 24 */
+typedef struct _RemoteMaintenanceStatus
+ {
+ RPC_DWORD dwStatus;
+ RPC_SYSTEMTIME st;
+ RPC_SZ szUser;
+ } RemoteMaintenanceStatus;
+
+ /* size is 12 */
+typedef struct _BackupListNode
+ {
+ struct _BackupListNode __RPC_FAR *pnodeNext;
+ struct _BackupListNode __RPC_FAR *pnodeChildren;
+ RPC_SZ szName;
+ } BackupListNode;
+
+ /* size is 44 */
+typedef struct _DistributedLockOwner
+ {
+ RPC_CHAR rgchComputer[ 17 ];
+ RPC_DWORD dwPID;
+ RPC_DWORD dwTID;
+ } DistributedLockOwner;
+
+#define DLR_NO_WAIT 0x00000001
+#define cchMaxLockName 17
+ /* size is 84 */
+typedef struct _DistributedLockRequest
+ {
+ RPC_CHAR rgchLockName[ 17 ];
+ RPC_DWORD dwFlags;
+ DistributedLockOwner dlo;
+ } DistributedLockRequest;
+
+ /* size is 48 */
+typedef struct _DistributedLockReply
+ {
+ RPC_BOOL fGranted;
+ DistributedLockOwner dlo;
+ } DistributedLockReply;
+
+#endif // #ifndef RPC_COMMON_IDL
+ /* size is 4 */
+RPC_SC __cdecl ScGetMaintenanceMode(
+ /* [in] */ handle_t h,
+ /* [out] */ RPC_DWORD __RPC_FAR *pdw,
+ /* [out] */ RPC_SYSTEMTIME __RPC_FAR *pst,
+ /* [out] */ RPC_SZ __RPC_FAR *pszUser);
+
+ /* size is 4 */
+RPC_SC __cdecl ScSetMaintenanceMode(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_DWORD dw,
+ /* [in] */ RPC_SZ szUser);
+
+ /* size is 4 */
+RPC_SC __cdecl ScGetRemoteSystemTime(
+ /* [in] */ handle_t h,
+ /* [out] */ RPC_SYSTEMTIME __RPC_FAR *pst);
+
+ /* size is 4 */
+RPC_SC __cdecl ScSetRemoteSystemTime(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_SYSTEMTIME __RPC_FAR *pst);
+
+#define dwServerFlagMapiRunning 0x00000001
+#define dwServerFlagNoPrivateStore 0x00000002
+ /* size is 4 */
+RPC_SC __cdecl ScGetRemoteServerStatus(
+ /* [in] */ handle_t h,
+ /* [out] */ RPC_DWORD __RPC_FAR *pdwServerFlags,
+ /* [out] */ RemoteSystemTimeInfo __RPC_FAR *prsti,
+ /* [out][in] */ RemoteServiceStatus __RPC_FAR *prss,
+ /* [out] */ RemoteMaintenanceStatus __RPC_FAR *prms);
+
+ /* size is 4 */
+RPC_SC __cdecl ScRunOffLineABTask(
+ /* [in] */ handle_t h);
+
+ /* size is 4 */
+RPC_SC __cdecl ScGetDistributedLock(
+ /* [in] */ handle_t h,
+ /* [in] */ DistributedLockRequest __RPC_FAR *pdlRequest,
+ /* [out] */ DistributedLockReply __RPC_FAR *pdlReply);
+
+ /* size is 4 */
+RPC_SC __cdecl ScReleaseDistributedLock(
+ /* [in] */ handle_t h,
+ /* [in] */ DistributedLockRequest __RPC_FAR *pdlRequest);
+
+ /* size is 4 */
+RPC_SC __cdecl ScKillDistributedLock(
+ /* [in] */ handle_t h,
+ /* [in] */ DistributedLockRequest __RPC_FAR *pdlRequest,
+ /* [out] */ DistributedLockReply __RPC_FAR *pdlReply);
+
+ /* size is 4 */
+RPC_SC __cdecl ScRasEnumEntries(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_INT cb,
+ /* [size_is][out] */ RPC_BYTE __RPC_FAR rgbRasEnumEntries[ ],
+ /* [out] */ RPC_INT __RPC_FAR *pcEntries);
+
+ /* size is 4 */
+RPC_SC __cdecl ScGetExtensionPath(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_SZ szExtensionName,
+ /* [in] */ RPC_SZ szExtensionCPU,
+ /* [out] */ RPC_SZ __RPC_FAR *pszExtensionPath);
+
+
+
+extern RPC_IF_HANDLE TriggerPrivateRPC_ClientIfHandle;
+extern RPC_IF_HANDLE TriggerPrivateRPC_ServerIfHandle;
+#endif /* __TriggerPrivateRPC_INTERFACE_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/private/utils/ntbackup/exchange/inc/rpcpub.h b/private/utils/ntbackup/exchange/inc/rpcpub.h
new file mode 100644
index 000000000..8be1b562b
--- /dev/null
+++ b/private/utils/ntbackup/exchange/inc/rpcpub.h
@@ -0,0 +1,387 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 2.00.0104 */
+/* at Mon Jan 29 16:52:25 1996
+ */
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __rpcpub_h__
+#define __rpcpub_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifndef __TriggerPublicRPC_INTERFACE_DEFINED__
+#define __TriggerPublicRPC_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: TriggerPublicRPC
+ * at Mon Jan 29 16:52:25 1996
+ * using MIDL 2.00.0104
+ ****************************************/
+/* [auto_handle][unique][version][uuid] */
+
+
+#ifndef RPC_COMMON_IDL
+#define RPC_COMMON_IDL
+#define szTriggerRPCProtocol TEXT("ncacn_np")
+#define szTriggerRPCSecurity TEXT("Security=impersonation dynamic true")
+ /* size is 4 */
+typedef long RPC_BOOL;
+
+ /* size is 1 */
+typedef small RPC_BYTE;
+
+ /* size is 4 */
+typedef long RPC_INT;
+
+ /* size is 4 */
+typedef long RPC_SC;
+
+ /* size is 4 */
+typedef long RPC_EC;
+
+ /* size is 4 */
+typedef long RPC_DWORD;
+
+ /* size is 2 */
+typedef wchar_t RPC_CHAR;
+
+ /* size is 4 */
+typedef /* [string] */ RPC_CHAR __RPC_FAR *RPC_SZ;
+
+ /* size is 16 */
+typedef struct __MIDL_TriggerPublicRPC_0001
+ {
+ short rgwSystemTime[ 8 ];
+ } RPC_SYSTEMTIME;
+
+ /* size is 172 */
+typedef struct __MIDL_TriggerPublicRPC_0002
+ {
+ RPC_BYTE rgbTzi[ 172 ];
+ } RPC_TIME_ZONE_INFORMATION;
+
+ /* size is 28 */
+typedef struct __MIDL_TriggerPublicRPC_0003
+ {
+ long rgdwServiceStatus[ 7 ];
+ } RPC_SERVICE_STATUS;
+
+#define ecOK 0 // no error
+#define ecGeneralFailure 50001 // a failure occurred that caused proxy generation to stop
+#define ecSomeProxiesFailed 50002 // some proxies failed to get generated
+#define ecTargetNotValid 50003 // supplied target address not valid
+#define ecTargetNotUnique 50004 // supplied target address not unique
+#define ecProxyDLLNotImplemented 50005 // not implemented yet
+#define ecProxyDLLOOM 50006 // memory allocation error
+#define ecProxyDLLError 50007 // general error
+#define ecProxyDLLProtocol 50008 // protocol error
+#define ecProxyDLLSyntax 50009 // syntax error
+#define ecProxyDLLEOF 50010 // end of file
+#define ecProxyDLLSoftware 50011 // error in software
+#define ecProxyDLLConfig 50012 // configuration error
+#define ecProxyDLLContention 50013 // contention error
+#define ecProxyDLLNotFound 50014 // not found
+#define ecProxyDLLDiskSpace 50015 // out of disk space
+#define ecProxyDLLException 50016 // exception thrown
+#define ecProxyDLLDefault 50017 // unknown error
+#define ecProxyNotValid 50018 // supplied proxy not valid
+#define ecProxyNotUnique 50019 // supplied proxy not unique or unable to generate a unique proxy
+#define ecProxyDuplicate 50020 // a primary proxy of the same type was also supplied
+ /* size is 16 */
+typedef struct _PROXYNODE
+ {
+ struct _PROXYNODE __RPC_FAR *pnodeNext;
+ RPC_SZ wszProxy;
+ RPC_EC ec;
+ RPC_SZ wszDN;
+ } PROXYNODE;
+
+ /* size is 4 */
+typedef struct _PROXYNODE __RPC_FAR *PPROXYNODE;
+
+ /* size is 48 */
+typedef struct _PROXYINFO
+ {
+ RPC_BOOL fContinueOnError;
+ RPC_BOOL fIgnoreOldSecondaries;
+ RPC_SZ wszDN;
+ RPC_SZ wszNickName;
+ RPC_SZ wszCommonName;
+ RPC_SZ wszDisplayName;
+ RPC_SZ wszSurName;
+ RPC_SZ wszGivenName;
+ RPC_SZ wszInitials;
+ RPC_SZ wszTargetAddress;
+ PROXYNODE __RPC_FAR *pPNVerifyProxy;
+ PROXYNODE __RPC_FAR *pPNExcludeProxy;
+ } PROXYINFO;
+
+ /* size is 4 */
+typedef struct _PROXYINFO __RPC_FAR *PPROXYINFO;
+
+ /* size is 8 */
+typedef struct _PROXYLIST
+ {
+ PROXYNODE __RPC_FAR *__RPC_FAR *ppPNProxy;
+ PROXYNODE __RPC_FAR *__RPC_FAR *ppPNFailedProxyType;
+ } PROXYLIST;
+
+ /* size is 4 */
+typedef struct _PROXYLIST __RPC_FAR *PPROXYLIST;
+
+ /* size is 192 */
+typedef struct __MIDL_TriggerPublicRPC_0004
+ {
+ RPC_SYSTEMTIME st;
+ RPC_TIME_ZONE_INFORMATION tzi;
+ RPC_DWORD dwReturn;
+ } RemoteSystemTimeInfo;
+
+ /* size is 48 */
+typedef struct _RemoteServiceStatus
+ {
+ RPC_SC sc;
+ RPC_SZ szShortName;
+ RPC_SZ szDisplayName;
+ RPC_SZ szVersion;
+ RPC_SERVICE_STATUS ss;
+ struct _RemoteServiceStatus __RPC_FAR *prssNext;
+ } RemoteServiceStatus;
+
+#define rmsSuspendRepair 0x0001
+#define rmsSuspendNotif 0x0002
+ /* size is 24 */
+typedef struct _RemoteMaintenanceStatus
+ {
+ RPC_DWORD dwStatus;
+ RPC_SYSTEMTIME st;
+ RPC_SZ szUser;
+ } RemoteMaintenanceStatus;
+
+ /* size is 12 */
+typedef struct _BackupListNode
+ {
+ struct _BackupListNode __RPC_FAR *pnodeNext;
+ struct _BackupListNode __RPC_FAR *pnodeChildren;
+ RPC_SZ szName;
+ } BackupListNode;
+
+ /* size is 44 */
+typedef struct _DistributedLockOwner
+ {
+ RPC_CHAR rgchComputer[ 17 ];
+ RPC_DWORD dwPID;
+ RPC_DWORD dwTID;
+ } DistributedLockOwner;
+
+#define DLR_NO_WAIT 0x00000001
+#define cchMaxLockName 17
+ /* size is 84 */
+typedef struct _DistributedLockRequest
+ {
+ RPC_CHAR rgchLockName[ 17 ];
+ RPC_DWORD dwFlags;
+ DistributedLockOwner dlo;
+ } DistributedLockRequest;
+
+ /* size is 48 */
+typedef struct _DistributedLockReply
+ {
+ RPC_BOOL fGranted;
+ DistributedLockOwner dlo;
+ } DistributedLockReply;
+
+#endif // #ifndef RPC_COMMON_IDL
+ /* size is 4 */
+RPC_SC __cdecl ScNetworkTimingTest(
+ /* [in] */ handle_t h,
+ /* [in] */ long cbSend,
+ /* [size_is][in] */ small __RPC_FAR rgbSend[ ],
+ /* [in] */ long cbReceive,
+ /* [size_is][out] */ small __RPC_FAR rgbReceive[ ]);
+
+ /* size is 4 */
+RPC_SC __cdecl ScRunRID(
+ /* [in] */ handle_t h);
+
+ /* size is 4 */
+RPC_SC __cdecl ScRunRIDEx(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_BOOL fProxySpace,
+ /* [in] */ RPC_BOOL fGwart);
+
+ /* size is 4 */
+RPC_SC __cdecl ScRunDRACheck(
+ /* [in] */ handle_t h,
+ RPC_DWORD dw);
+
+#define BPTAdd 1
+#define BPTRemove 2
+#define BPTUpdate 3
+ /* size is 4 */
+RPC_SC __cdecl ScBulkCreateProxy(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_SZ szHeader,
+ /* [in] */ RPC_DWORD dwOptions);
+
+ /* size is 4 */
+RPC_SC __cdecl ScBulkCreateMultiProxy(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_INT cszHeader,
+ /* [size_is][in] */ RPC_SZ __RPC_FAR rgszRecipients[ ],
+ /* [in] */ RPC_DWORD dwOptions);
+
+ /* size is 4 */
+RPC_SC __cdecl ScBulkUpdateMultiProxy(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_INT cszSiteAddress,
+ /* [size_is][in] */ RPC_SZ __RPC_FAR rgszOldSiteAddress[ ],
+ /* [size_is][in] */ RPC_SZ __RPC_FAR rgszNewSiteAddress[ ],
+ /* [in] */ RPC_BOOL fSaveSiteAddress);
+
+ /* size is 4 */
+RPC_SC __cdecl ScGetBulkProxyStatus(
+ /* [in] */ handle_t h,
+ /* [out] */ RPC_SYSTEMTIME __RPC_FAR *pstTimeStart,
+ /* [out] */ RPC_DWORD __RPC_FAR *pdwTimeStart,
+ /* [out] */ RPC_DWORD __RPC_FAR *pdwTimeCur,
+ /* [out] */ RPC_INT __RPC_FAR *piRecipients,
+ /* [out] */ RPC_INT __RPC_FAR *pcRecipients);
+
+ /* size is 4 */
+RPC_SC __cdecl ScBulkProxyHalt(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_BOOL fWaitForShutdown);
+
+ /* size is 4 */
+RPC_EC __cdecl EcGetProxies(
+ /* [in] */ handle_t h,
+ /* [in] */ PPROXYINFO pProxyInfo,
+ /* [out][in] */ PPROXYLIST pProxyList);
+
+ /* size is 4 */
+RPC_SC __cdecl ScIsProxyUnique(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_SZ szProxy,
+ /* [out] */ RPC_BOOL __RPC_FAR *pfUnique,
+ /* [out] */ RPC_SZ __RPC_FAR *pszOwner);
+
+ /* size is 4 */
+RPC_SC __cdecl ScProxyValidate(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_SZ szProxy,
+ /* [out] */ RPC_BOOL __RPC_FAR *pfValid,
+ /* [out] */ RPC_SZ __RPC_FAR *pszProxyCorrected);
+
+ /* size is 4 */
+RPC_SC __cdecl ScSiteProxyValidate(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_SZ szSiteProxy,
+ /* [out] */ RPC_BOOL __RPC_FAR *pfValid,
+ /* [out] */ RPC_SZ __RPC_FAR *pszSiteProxyCorrected);
+
+ /* size is 4 */
+RPC_SC __cdecl ScProxyReset(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_BOOL fWaitUntilCompleted);
+
+#define scNoError 0
+#define scInvalidData 1
+#define scCannotLogData 2
+ /* size is 4 */
+RPC_SC __cdecl ScSaveTrackingData(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_INT cb,
+ /* [size_is][in] */ RPC_BYTE __RPC_FAR pb[ ],
+ /* [in] */ RPC_DWORD dwFlags);
+
+#define tevtMessageTransferIn 0
+#define tevtReportTransferIn 2
+#define tevtMessageSubmission 4
+#define tevtMessageTransferOut 7
+#define tevtReportTransferOut 8
+#define tevtMessageDelivery 9
+#define tevtReportDelivery 10
+#define tevtStartAssocByMTSUser 18
+#define tevtReleaseAssocByMTSUser 23
+#define tevtDLExpansion 26
+#define tevtRedirection 28
+#define tevtRerouting 29
+#define tevtDowngrading 31
+#define tevtReportAbsorption 33
+#define tevtReportGenerated 34
+#define tevtUnroutableReportDiscard 43
+#define tevtMessageLocalDelivery 1000
+#define tevtMessageBackboneTransferIn 1001
+#define tevtMessageBackboneTransferOut 1002
+#define tevtMessageGatewayTransferOut 1003
+#define tevtMessageGatewayTransferIn 1004
+#define tevtReportGatewayTransferIn 1005
+#define tevtReportGatewayTransferOut 1006
+#define tevtReportGatewayGenerated 1007
+#define tevtUserMin 2000
+ /* size is 60 */
+typedef struct __MIDL_TriggerPublicRPC_0005
+ {
+ RPC_INT nEventType;
+ RPC_SYSTEMTIME stEvent;
+ RPC_SZ szGatewayName;
+ RPC_SZ szPartner;
+ RPC_SZ szMTSID;
+ RPC_SZ szRemoteID;
+ RPC_SZ szOriginator;
+ RPC_INT nPriority;
+ RPC_INT nLength;
+ RPC_INT nSeconds;
+ RPC_INT nCost;
+ RPC_SZ szSubjectID;
+ } RPC_GATEWAY_TRACK_INFORMATION;
+
+ /* size is 4 */
+RPC_SC __cdecl ScSaveGatewayTrackingData(
+ /* [in] */ handle_t h,
+ /* [in] */ RPC_GATEWAY_TRACK_INFORMATION __RPC_FAR *pgti,
+ /* [in] */ RPC_INT cszRecipients,
+ /* [size_is][in] */ RPC_SZ __RPC_FAR rgszRecipients[ ]);
+
+
+
+extern RPC_IF_HANDLE TriggerPublicRPC_ClientIfHandle;
+extern RPC_IF_HANDLE TriggerPublicRPC_ServerIfHandle;
+#endif /* __TriggerPublicRPC_INTERFACE_DEFINED__ */
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0001
+ * at Mon Jan 29 16:52:25 1996
+ * using MIDL 2.00.0104
+ ****************************************/
+/* [local] */
+
+
+#define szTrackReportRecipientInfoDelivered L("\t0")
+#define szTrackReportRecipientInfoNonDelivered L("\t1")
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0001_ClientIfHandle;
+extern RPC_IF_HANDLE __MIDL__intf_0001_ServerIfHandle;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/private/utils/ntbackup/exchange/inc/sadapi.h b/private/utils/ntbackup/exchange/inc/sadapi.h
new file mode 100644
index 000000000..ce471ed40
--- /dev/null
+++ b/private/utils/ntbackup/exchange/inc/sadapi.h
@@ -0,0 +1,197 @@
+/*
+ * sadapi.h
+ *
+ * Copyright (c) Microsoft Corp. 1986-1996. All Rights Reserved.
+ *
+ * Definition of the public RPC APIs from the SAD Exchange service
+ *
+ */
+
+
+#ifndef _SADLIB_H_
+#define _SADLIB_H_
+
+#include <rpcpub.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+/*
+ * Return codes for all functions except SAD_EcGetProxies() and SAD_EcGetProxiesBI().
+ * In addition to this list are all normal NT error codes...
+ */
+typedef enum _SC_RETURN_VALUES
+{
+ SC_OK = 0, // no error
+ SC_Error = 49001, // general error
+ SC_BPActive, // bulk proxy generation is currently running
+ SC_BPInactive, // bulk proxy generation is not currently running
+ SC_BPShutdownPending, // a shutdown in bulk proxy generation is in progress
+ SC_BPSiteAddressMismatch, // a Site Address Mismatch between rgszOldSiteAddress
+ // and rgszNewSiteAddress lists in ScBulkUpdateMultiProxy
+} SC_RETURN_VALUES;
+
+
+#define cchMaxServer (MAX_COMPUTERNAME_LENGTH + 1)
+
+typedef struct _RPCBINDINFO
+{
+ handle_t h;
+ WCHAR wszServer[cchMaxServer];
+ RPC_IF_HANDLE hClientIfHandle;
+} RPCBINDINFO, *PRPCBINDINFO;
+
+
+// Utility entry points
+RPC_SC WINAPI SAD_ScBindA(PRPCBINDINFO pBI, LPSTR szServer);
+RPC_SC WINAPI SAD_ScBindW(PRPCBINDINFO pBI, LPWSTR wszServer);
+void WINAPI SAD_Unbind(PRPCBINDINFO pBI);
+
+#ifdef UNICODE
+#define SAD_ScBind SAD_ScBindW
+#else
+#define SAD_ScBind SAD_ScBindA
+#endif
+
+
+
+// Message Tracking group
+RPC_SC WINAPI SAD_ScSaveGatewayTrackingData(PRPCBINDINFO pBI,
+ RPC_GATEWAY_TRACK_INFORMATION * pgti,
+ INT cszRecipients,
+ LPWSTR rgwszRecipients[]);
+
+// for Microsoft Internal Use ONLY
+RPC_SC WINAPI SAD_ScSaveTrackingData(PRPCBINDINFO pBI, INT cb, BYTE pb[], DWORD dwFlags);
+
+
+// for Gateways - cause the routing table to be recalculated
+RPC_SC WINAPI SAD_ScRunRIDA(LPSTR szServer);
+RPC_SC WINAPI SAD_ScRunRIDW(LPWSTR wszServer);
+RPC_SC WINAPI SAD_ScRunRIDExA(LPSTR szServer, RPC_BOOL fProxySpace, RPC_BOOL fGwart);
+RPC_SC WINAPI SAD_ScRunRIDExW(LPWSTR wszServer, RPC_BOOL fProxySpace, RPC_BOOL fGwart);
+
+#ifdef UNICODE
+#define SAD_ScRunRID SAD_ScRunRIDW
+#define SAD_ScRunRIDEx SAD_ScRunRIDExW
+#else
+#define SAD_ScRunRID SAD_ScRunRIDA
+#define SAD_ScRunRIDEx SAD_ScRunRIDExA
+#endif
+
+
+
+// Proxy Entry points
+
+RPC_EC WINAPI SAD_EcGetProxies(LPWSTR wszServer, PPROXYINFO pProxyInfo, PPROXYLIST pProxyList);
+RPC_EC WINAPI SAD_EcGetProxiesBI(PRPCBINDINFO pBI, PPROXYINFO pProxyInfo, PPROXYLIST pProxyList);
+void WINAPI SAD_FreeProxyListNode(PPROXYNODE pnode);
+RPC_SC WINAPI SAD_ScIsProxyUniqueA(LPSTR szServer,
+ LPSTR szProxy, RPC_BOOL * pfUnique, LPSTR * pszExisting);
+RPC_SC WINAPI SAD_ScIsProxyUniqueW(LPWSTR wszServer,
+ LPWSTR szProxy, RPC_BOOL * pfUnique, LPWSTR * pszExisting);
+
+// dwOptions values for SAD_ScBulkCreateProxy() and SAD_ScBulkCreateMultiProxy()
+#define BPTAdd 1
+#define BPTRemove 2
+#define BPTUpdate 3
+
+RPC_SC WINAPI SAD_ScBulkCreateProxyA(LPSTR szServer, LPSTR szHeader, DWORD dwOptions);
+RPC_SC WINAPI SAD_ScBulkCreateProxyW(LPWSTR wszServer, LPWSTR wszHeader, DWORD dwOptions);
+RPC_SC WINAPI SAD_ScBulkCreateMultiProxyA(LPSTR szServer,
+ INT cszHeader,
+ LPSTR rgszHeader[],
+ DWORD dwOptions);
+RPC_SC WINAPI SAD_ScBulkCreateMultiProxyW(LPWSTR wszServer,
+ INT cwszHeader,
+ LPWSTR rgwszHeader[],
+ DWORD dwOptions);
+RPC_SC WINAPI SAD_ScBulkUpdateMultiProxy(LPWSTR wszServer,
+ INT cwszSiteAddress,
+ LPWSTR rgwszOldSiteAddress[],
+ LPWSTR rgwszNewSiteAddress[],
+ RPC_BOOL fSaveSiteAddress);
+
+
+RPC_SC WINAPI SAD_ScGetBulkProxyStatusA(LPSTR szServer,
+ RPC_SYSTEMTIME * pstTimeStart,
+ DWORD * pdwTimeStart,
+ DWORD * pdwTimeCur,
+ INT * piRecipients,
+ INT * pcRecipients);
+RPC_SC WINAPI SAD_ScGetBulkProxyStatusW(LPWSTR wszServer,
+ RPC_SYSTEMTIME * pstTimeStart,
+ DWORD * pdwTimeStart,
+ DWORD * pdwTimeCur,
+ INT * piRecipients,
+ INT * pcRecipients);
+RPC_SC WINAPI SAD_ScBulkProxyHaltA(LPSTR szServer, RPC_BOOL fWaitForShutdown);
+RPC_SC WINAPI SAD_ScBulkProxyHaltW(LPWSTR wszServer, RPC_BOOL fWaitForShutdown);
+
+#ifdef UNICODE
+#define SAD_ScIsProxyUnique SAD_ScIsProxyUniqueW
+#define SAD_ScBulkCreateProxy SAD_ScBulkCreateProxyW
+#define SAD_ScBulkCreateMultiProxy SAD_ScBulkCreateMultiProxyW
+#define SAD_ScGetBulkProxyStatus SAD_ScGetBulkProxyStatusW
+#define SAD_ScBulkProxyHalt SAD_ScBulkProxyHaltW
+#else
+#define SAD_ScIsProxyUnique SAD_ScIsProxyUniqueA
+#define SAD_ScBulkCreateProxy SAD_ScBulkCreateProxyA
+#define SAD_ScBulkCreateMultiProxy SAD_ScBulkCreateMultiProxyA
+#define SAD_ScGetBulkProxyStatus SAD_ScGetBulkProxyStatusA
+#define SAD_ScBulkProxyHalt SAD_ScBulkProxyHaltA
+#endif
+
+
+
+
+
+
+// Backup entry point (available only in UNICODE!)
+
+RPC_SC WINAPI SAD_ScGetBackupListNodeW(LPWSTR wszServer, BackupListNode ** ppnode);
+void WINAPI SAD_FreeBackupListNode(BackupListNode * pnode);
+
+
+// Run DRA Check calling parameters (dwCheck)
+#define INTRASITE_CHECK 0
+#define INTERSITE_CHECK 1
+
+RPC_SC WINAPI SAD_ScRunDRACheck(LPWSTR wszServer, RPC_DWORD dwCheck);
+
+
+
+// These few lines (or equivalent) need to be supplied by the application that links
+// with SADAPI.LIB.
+#ifdef _SAMPLE_CODE
+void __RPC_FAR * __RPC_API midl_user_allocate(size_t cb)
+{
+ void * pv;
+
+ pv = GlobalAlloc(GMEM_FIXED, cb);
+ if (!pv)
+ RpcRaiseException(RPC_S_OUT_OF_MEMORY);
+
+ return pv;
+}
+
+void __RPC_API midl_user_free(void __RPC_FAR * pv)
+{
+ GlobalFree(pv);
+}
+#endif
+
+
+
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // #ifndef _SADLIB_H_
diff --git a/private/utils/ntbackup/exchange/readme.txt b/private/utils/ntbackup/exchange/readme.txt
new file mode 100644
index 000000000..bc2ba8226
--- /dev/null
+++ b/private/utils/ntbackup/exchange/readme.txt
@@ -0,0 +1,8 @@
+The files below this directory are coppied from Exchange's
+tdcommon directory.
+
+Please to not modify. Simply copy the updates from the
+\\iyf\src\tdcommon directory
+
+Thanks,
+Steve